ฟังก์ชั่น 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
น.ส.กุลธิดา สกุลกลาง
ตอบลบน.ส. เรณูมาศ จันทร์งาม ม.4/1 เลขที่19
ตอบลบน.ส.อารียา ยาย่อ ม.4/1 เลขที่25
ตอบลบความคิดเห็นนี้ถูกผู้เขียนลบ
ตอบลบสุธิตา สุพรรณ
ตอบลบศกดิ์สิทธิ์ ปักกาสิเนย์
ตอบลบน.ส. สุกัญญา ไฝชอบ
ตอบลบน.ส.สายสมร สีเสน
ตอบลบน.ส.กุลสตรี สกุลกลางล เลขที่3
ตอบลบน.ส.วรรณวิสา จันคำ
ตอบลบโชคสันติ
ตอบลบน.ส.มุกรินทร์ หยวกวิ่ง #รายงานตัวค่ะ
ตอบลบน.ส.นุชรินทร์ โพธิ์ศรี เลขที่16 ม.4/1
ตอบลบน.ส.มนัญญา ชาหลาบคำ ม.4/1 เลขที่17
ตอบลบน.ส. พัชรินทร์ หมั่นกิจ 4/1 เลขที่29
ตอบลบกฤษณะ หนูสุวรรณ์ เลขที่22
ตอบลบยุภาวดี ศรีพวงเพชร เลขที่18
ตอบลบน.ส. วณัฐชา ชัยปัญหา เลขที่8
ตอบลบน.ส.ฉวีวรรณ บุญเหลา เลขที่ 28
ตอบลบน.ส.ปนัดดา สวนดี
ตอบลบน.ส.กัญญารัตน์ ยอดทองหลาง เลขที่ 27
ตอบลบ