Stage 4

รับค่าด้วย scanf

รับค่าจากผู้ใช้ด้วย scanf เข้าใจ & format specifier และข้อผิดพลาดที่พบบ่อย

scanf ใช้รับค่าจากผู้ใช้ โดยต้องระบุ format specifier ให้ตรงกับชนิดตัวแปร เช่น scanf("%d", &age); เครื่องหมาย & ใช้ส่งตำแหน่งหน่วยความจำของตัวแปรให้ scanf นำค่าที่รับไปเก็บ

ตัวแปรทั่วไปเช่น int, float, char ต้องใช้ & แต่ char array หรือ string แบบพื้นฐานมักไม่ต้องใส่ & เช่น scanf("%s", name); เพราะชื่อ array เป็นตำแหน่งเริ่มต้นอยู่แล้ว

ข้อผิดพลาดที่พบบ่อยคือใช้ %d กับตัวแปร float, ลืม &, หรือใส่ข้อความอื่นใน scanf มากเกินไป การรับ char หลังรับตัวเลขอาจติดปัญหา newline ค้างใน buffer ซึ่งต้องระวังในบทต่อไป

ควรแสดงข้อความบอกผู้ใช้ก่อนรับค่า เช่น printf("Enter age: "); เพื่อให้โปรแกรมใช้งานง่าย
ภารกิจ

เขียนโปรแกรมรับอายุและคะแนนจากผู้ใช้ จากนั้นแสดงผลกลับอย่างเป็นประโยค

แบบทดสอบ

1. scanf("%d", &age); เครื่องหมาย & หมายถึงอะไร
2. ถ้ารับค่า float ควรใช้ format ใดใน scanf
3. ข้อผิดพลาดใดทำให้ scanf เก็บค่าเข้า int ไม่ได้ถูกต้อง
4. ก่อน scanf ควรมี printf เพื่ออะไร
5. scanf("%s", name); โดยทั่วไป name เป็นอะไร

จำลองเขียนภาษา C

เขียนโปรแกรมที่ประกาศตัวแปรอย่างน้อย 2 ตัว ใช้ scanf รับค่า และ printf แสดงผล โดยใช้ & ให้ถูกต้อง