Computer >> Máy Tính >  >> Lập trình >> lập trình C

Bạn nghĩ gì về bộ đệm trong ngôn ngữ C?

Một vùng lưu trữ tạm thời được gọi là vùng đệm. Tất cả các thiết bị đầu ra đầu vào (I / O) đều chứa bộ đệm I / O.

Khi chúng tôi cố gắng chuyển nhiều hơn số lượng giá trị cần thiết làm đầu vào thì các giá trị còn lại sẽ tự động giữ trong bộ đệm đầu vào. Dữ liệu đệm này sẽ tự động chuyển đến chức năng đầu vào tiếp theo, nếu nó tồn tại.

Chúng tôi phải xóa bộ đệm trước khi nhập dữ liệu đầu vào tiếp theo.

Ví dụ

Sau đây là chương trình C cho bộ đệm -

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

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

Enter a value: 1
Enter b value: 2
a+b=3

Một lần nữa, hãy chạy chương trình. Lần này, chúng tôi cố gắng nhập các giá trị trong a chứ không phải trong b.

Enter a value: 1 2 3
Enter b value: a+b=3

Mặc dù chúng tôi không nhập giá trị b, nhưng giá trị này sẽ lấy giá trị đã lưu trữ trước đó, giá trị này đã có trong bộ đệm.

Trong quá trình triển khai, khi chúng ta cần xóa dữ liệu bộ đệm đầu vào tiêu chuẩn, hãy chuyển sang hàm flushall () hoặc fflush ().

  • flushall () - Đây là một hàm được xác định trước có trong stdio.h. bằng cách sử dụng flushall, chúng tôi có thể xóa dữ liệu khỏi bộ đệm I / O.

  • fflush () - Đây là một hàm được xác định trước trong tệp tiêu đề "stdio.h" được sử dụng để xóa bộ nhớ đệm đầu vào hoặc đầu ra.

  • fflush (stdin) - Nó được sử dụng để xóa bộ nhớ đệm đầu vào. Bạn nên sử dụng trước khi viết câu lệnh scanf.

  • fflush (stdout) - Nó được sử dụng để xóa bộ nhớ đệm đầu ra. Bạn nên sử dụng trước câu lệnh printf.