Buffer = พื้นที่เก็บข้อมูลชั่วคราว (temporary storage) สำหรับ I/O
ถ้าป้อนค่ามากกว่าที่ scanf ต้องการ ค่าที่เหลือจะค้างใน input buffer ไปให้ scanf ตัวถัดไป
ตัวอย่างปัญหา Buffer
Enter a value: 1 2 3
Enter b value: (ไม่ต้องพิมพ์ โปรแกรมอ่าน 2 จาก buffer เลย)
a+b = 3
ฟังก์ชันล้าง Buffer
flushall()- ล้าง I/O buffer ทั้งหมด (ใน stdio.h)fflush(stdin)- ล้าง input buffer (แนะนำก่อน scanf)fflush(stdout)- ล้าง output buffer (แนะนำก่อน printf)
โปรแกรมตัวอย่าง
#include <stdio.h>
void main() {
int a, b;
printf("Enter a value: ");
scanf("%d", &a);
printf("Enter b value: ");
scanf("%d", &b);
printf("a+b = %d", a+b);
}