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