ฟังก์ชัน scanf()

ฟังก์ชั่น scanf()
                ฟังก์ชั่น scanf()   เป็นฟังก์ชั่นพื้นฐานที่ใช้ควบคู่กับฟังก์ชั่น printf()   โดยใช้สำหรับรับข้อมูลทีอ่านจากแป้นพิมพ์ตามรูปแบบที่กำหนดด้วยเครื่องหมาย %   เข้ามาเก็บไว้ในตัวแปรในส่วนของ   Argument  ทันทีที่ผู้ใช้กดแป้น Enter   โดยที่ตัวแปรเหล่านี้จะเป็นตัวชี้ (Pointer)  ที่ชี้ไปยังชนิดของข้อมูลที่สอดคล้องกับรูปแบบที่กำหนดไว้  
                การอ่านค่าจากคีย์บอร์ดนี้  ถ้าหากว่าเราต้องการให้ค่าเป็นตัวเลขที่จะนำไปใช้ในการคำนวณ  เราจะใช้เครื่องหมาย  &  นำหน้าตัวแปร   แต่หากจะอ่านค่าเป็นข้อความเข้าเก็บในตัวแปรเลยก็ไม่จำเป็นต้องใช้เครื่องหมาย  &  

คำสั่งรับข้อมูลจากคีย์บอร์ด
การทำงานของโปรแกรมส่วนใหญ่มักจะเป็นการเชื่อมโยงกับผู้ใช้แบบ 2 ทิศทาง คือ ทั้งภาคของการ แสดงผลการทำงานออกทางหน้าจอ และภาคของการรับข้อมูลจากผู้ใช้เข้ามาทางคีย์บอร์ด เพื่อร่วมในการประมวลผลของโปรแกรม การรับข้อมูลจากคีย์บอร์ดสามารถทำได้โดยการเรียกใช้ฟังก์ชัน scanf() ซึ่งเป็นฟังก์ชัน มาตรฐานสำหรับรับข้อมูลจากคีย์บอร์ด โดยสามารถรับข้อมูลได้ทุกประเภท ไม่ว่าจะเป็นจำนวนเต็ม ทศนิยม อักขระ หรือข้อความ

รูปแบบคำสั่ง scanf()
scanf(“format”,&variable);

format คือ การใช้รหัสควบคุมรูปแบบ เพื่อกำหนดชนิดของข้อมูลที่จะรับเข้ามาจากคีย์บอร์ด โดย รหัสควบคุมรูปแบบใช้ชุดเดียวกับคำสั่ง printf()
 variable คือ ตัวแปรที่จะใช้เก็บค่าข้อมูลที่รับเข้ามาจากคีย์บอร์ด โดยชนิดของตัวแปรจะต้องตรงกับ รหัสควบคุมรูปแบบที่กำหนดไว้นอกจากนี้หน้าชื่อของตัวแปรจะต้องนำหน้าด้วย เครื่องหมาย & ยกเว้นตัวแปรสตริง สำหรับเก็บข้อความเท่านั้นที่ไม่ต้องนำหน้าด้วย เครื่องหมาย &

รูปแบบการรับข้อมูลของฟังก์ชั่น scanf()   มีดังนี้


รูปแบบการรับข้อมูล
ความหมาย
%c

%d
%e
%f
%h

%i
%l
%o
%p
%s
%x
%*
%number
%[…]
ใช้รับข้อมูลที่เป็นตัวอักษรตัวเดียว (Character)  รวมถึงเครื่องหมายต่างๆ  และช่องว่าง (Blank)
ใช้รับข้อมูลที่เป็นเลขจำนวนเต็ม (Integer)
ใช้รับข้อมูลที่เป็นเลขทศนิยมยกกำลัง (Exponential)
ใช้รับข้อมูลที่เป็นเลขจำนวนจริง   เช่นเดียวกับ  %e
ใช้รับข้อมูลที่เป็นตัวเลขเช่นเดียวกับ %e  และ %f   แต่แบบสั้น (Short int)
ใช้รับข้อมูลที่เป็นเลขจำนวนเต็ม (Integer)
ใช้รับข้อมูลที่เป็นเลขแบบ Long
ใช้รับข้อมูลที่เป็นเลขฐานแปด (Octal  Number)
ใช้รับข้อมูลที่เป็นค่าของพอยน์เตอร์ (pointer)
ใช้รับข้อมูลแบบข้อความ (string)
ใช้รับข้อมูลที่เป็นเลขฐานสิบหก (Hexadecimal)
กำหนดให้ข้ามค่านี้ไป
กำหนดความกว้างสูงสุดของระยะการรับข้อมูล
กำหนดให้รับข้อมูลที่อยู่ภายในเครื่องหมาย [..]  ทั้งหมด
ถ้าไม่ต้องการให้รับตัวอักษรตัวใด  ให้ใส่เครื่องหมาย  ^   นำหน้าอักษรตัวนั้น

ตัวอย่าง การใช้งานคำสั่ง scanf() เพื่อรับข้อมูลจากคีย์บอร์ด
int speed;                                 //สร้างตัวแปรชนิด int สำหรับเก็บค่าตัวเลขจำนวนเต็ม
printf(“Enter wind speed: “);   //แสดงข้อความให้กรอกค่าความเร็วลมเป็นจำนวนเต็ม
scanf(“%d”,&speed);              //รับค่าความเร็วลมเข้ามาเก็บไว้ในตัวแปร speed
                               *************************
char answer;                           //สร้างตัวแปรชนิด char สำหรับเก็บอักขระ
printf(“Enter Figure (Y : N) : “)   //แสดงข้อความให้ป้อนอักขระ Y หรือ N
scanf(“%c”,&answer);                 //รับอักขระเข้ามาเก็บไว้ในตัวแปร answer
                             **************************
char name[10];                            //สร้างตัวแปรสตริงสำหรับเก็บข้อความ
printf(“Enter your name = “);     //แสดงข้อความให้ป้อนชื่อ
scanf(“%s”,name);                 //รับชื่อเข้ามาเก็บไว้ในตัวแปร name
                            ***************************
**สังเกตจะไม่ใส่ เครื่องหมาย & ตัวแปรชนิดข้อความ

ตัวอย่างโปรแกรม
#include <stdio.h>
void main()
{
int x,y,sum;
printf(“Enter The Length is : “);
scanf (“%d”,&x); printf(“Enter The Width is : “);
scanf (“%d”,&y); sum = x*y;
printf(“The area is :%d”,sum); getch();
}

ผลลัพธ์ 
Enter The Length is : 4
Enter The Width is : 10

The area is : 40



21 ความคิดเห็น:

  1. น.ส.กุลธิดา สกุลกลาง

    ตอบลบ
  2. น.ส. เรณูมาศ จันทร์งาม ม.4/1 เลขที่19

    ตอบลบ
  3. น.ส.อารียา ยาย่อ ม.4/1 เลขที่25

    ตอบลบ
  4. ความคิดเห็นนี้ถูกผู้เขียนลบ

    ตอบลบ
  5. ศกดิ์สิทธิ์ ปักกาสิเนย์

    ตอบลบ
  6. น.ส.กุลสตรี สกุลกลางล เลขที่3

    ตอบลบ
  7. น.ส.วรรณวิสา จันคำ

    ตอบลบ
  8. น.ส.มุกรินทร์ หยวกวิ่ง #รายงานตัวค่ะ

    ตอบลบ
  9. น.ส.นุชรินทร์ โพธิ์ศรี เลขที่16 ม.4/1

    ตอบลบ
  10. น.ส.มนัญญา ชาหลาบคำ ม.4/1 เลขที่17

    ตอบลบ
  11. น.ส. พัชรินทร์ หมั่นกิจ 4/1 เลขที่29

    ตอบลบ
  12. กฤษณะ หนูสุวรรณ์ เลขที่22

    ตอบลบ
  13. ยุภาวดี ศรีพวงเพชร เลขที่18

    ตอบลบ
  14. น.ส. วณัฐชา ชัยปัญหา เลขที่8

    ตอบลบ
  15. น.ส.ฉวีวรรณ บุญเหลา เลขที่ 28

    ตอบลบ
  16. น.ส.กัญญารัตน์ ยอดทองหลาง เลขที่ 27

    ตอบลบ