scanf เป็นคำสั่งที่ใช้เพื่อรับข้อมูลจาก key board
รูปแบบคำสั่ง scanf("format string",address list);
โดยคำสั่งจะประกอบไปด้วยสองส่วนได้แก format string และ address
scanf ใช้พรีโปรเซสเซอร์ไดเรคทีฟ stdio.h
รูปแบบคำสั่ง scanf("format string",address list);
โดยคำสั่งจะประกอบไปด้วยสองส่วนได้แก format string และ address
scanf ใช้พรีโปรเซสเซอร์ไดเรคทีฟ stdio.h
- format string : จะคล้ายกับคำสั่ง printf โดยจะอยู่ในเครื่องหมาย " " Double quote แต่จะมีเพียงลักษณะเดียวคือ รูปแบบค่าตัวแปร หมายความว่า
- ถ้าจะรับข้อมูลที่เป็นตัวเลยจำนวนเต็มจะต้องใช้ %d
- ถ้าจะรับข้อมูลที่เป็นจุดทศนิยมจะต้องใช้ %f
- ถ้าจะรับข้อมูลที่เป็นอักขระจะต้องใช้ %c
- ถ้าจะรับข้อมูลที่เป็นสายอักขระจะต้องใช้ %s - address list : เป็นส่วนที่อ้างที่อยู่ของตัวแปลที่จะรับค่าจากคีย์บอร์ดโดยใช้สัญลักษณ์ "&" และตามด้วยชื่อตัวแปร โดยมีข้อยกเว้นว่าถ้าเป็นตัวแปรชนิดที่เป็นสายอักขระ (String) จะไม่ต้องใส่ &
ตัวอย่างการใช้โปรแกรม scanf
ปัญหาที่เกิดจากการรันโปรแกรมนี้
#include <stdio.h>
int main()
{
float gpa; //ประกาศตัวแปร gpa รับค่าเกรดเป็นลักษณะจุดทศนิยม
char name[20]; //ประกาศตัวแปร name รับค่าชื่อที่เป็นลักษณะสายอักขระ
printf("Enter your name : ");
scanf("%s",name); //ตัวแปรที่รับค่าเป็นสายอักขระไม่ต้องมี &
printf("Enter your GPA : ");
scanf("%f",&gpa); //ตัวแปลที่รับเป็น float ต้องมี & หน้าตัวแปร
return 0;
}
ในบรรทัด 7 เราจะไม่สามารถกด space bar เพื่อทำการเว้นวรรคการพิมพ์ข้อความได้ถ้าเรากด space bar เราจะไม่สามาถรับต่า GPA ต่อได้ ดังนั้นถ้าเราอยากจะพิมพ์อักขระที่สามารถเ้ว้นวรรคได้รูปแบบคำสั่งจะเป็น
scanf("%[^\n]",string);
#include <stdio.h>
int main()
{
float gpa;
char name[20];
printf("Enter your name : ");
scanf("%[^\n]",name); //เปลี่ยน %s เป็น %[^\n] เพื่อให้รับค่าที่เว้นวรรคได้
printf("Enter your GPA : ");
scanf("%f",&gpa);
printf("Name is %s\n",name);//แสดงผลค่า name ที่รับมาจากแป้นพิมพ์
printf("GPA is %.2f",gpa); //แสดงผลค่า gpa ที่รับมาจากแป้นพิมพ์
return 0;
}
ผลจากการรันโปรแกรม

การรับค่าหลายๆตัวแปรใรคำสั่งเดียว
#include <stdio.h>ผลการรันโปรแกรม
int main()
{
int my_day,my_month,my_year;
printf("Enter your birthday (Format dd/mm/yyyy): ");
scanf("%d/%d/&d",&my_day,&my_month,&my_year);
//มีการรับค่า my_day,my_month,my_year
printf("Your Birthday are %d-%d-%d",my_day,my_month,my_year);
return 0;
}

No comments:
Post a Comment