增加一个例子, 考虑下面的代码, 如果不加 ffush() 这一行,会怎样?
#include<stdio.h>
int main(void) {
int a, b;
printf("Enter first number: ");
scanf("%d", &a);
printf("firstint is: %d\n\n", a);
// fflush(stdin); // 清空缓冲区
printf("Enter second number: ");
scanf("%d", &b);
printf("second number is: %d\n", b);
return 0;
}
输出:
如果加上 fflush(stdin);
#include<stdio.h>
int main(void) {
int a, b;
printf("Enter first number: ");
scanf("%d", &a);
printf("firstint is: %d\n\n", a);
fflush(stdin); // 清空缓冲区
printf("Enter second number: ");
scanf("%d", &b);
printf("second number is: %d\n", b);
return 0;
}
输出:
依我的理解,fflush(stdout) 就是强制刷新。
以下是一些详细的解释:
1. 在C语言中,fflush
函数用于清除输出缓冲区。这个函数可以强制将缓冲区中的数据立即写入到文件或标准输出(例如屏幕)中,而不是等待缓冲区满了才写入。fflush
的原型定义在 <stdio.h>
头文件中。
2. fflush(stdout) 确保 打印的文本立即显示在屏幕上,而不是在缓冲区中等待。
3. fflush
函数中的 "f" 代表 "force"(强制), 或是 file ???
4. 然而,这个操作通常不是必需的,因为大多数现代操作系统和终端会在适当的时机自动刷新标准输出缓冲区。不过,在某些情况下,如果需要确保用户立即看到输出,使用 fflush(stdout)
可以强制刷新。
使用示例代码:
#include <stdio.h>
// 计算三角形的面积。
void triangle() {
int base, height, area;
printf("base: ");
// fflush 的目的是:
// 确保 打印的文本立即显示在屏幕上,而不是在缓冲区中等待。
fflush(stdout);
scanf("%d", &base);
printf("height: ");
fflush(stdout);
scanf("%d", &height);
area = (base * height) / 2;
printf("area is: %d\n", area);
}
int main() {
triangle();
return 0;
}