Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

Buffer ในภาษา C คืออะไร และการล้าง Buffer (flush)

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);
}