📜  fflush stdin (1)

📅  最后修改于: 2023-12-03 14:41:10.575000             🧑  作者: Mango

fflush(stdin)介绍

在介绍 fflush(stdin) 函数之前需要先了解一下输入和输出缓冲区, 以及清除缓冲区的方法。

输入缓冲区和输出缓冲区

输入缓冲区和输出缓冲区是指输入和输出流在内存中预留的存储空间。在C语言中,当输入或输出字符时,先将它们存储在对应的缓冲区中,然后再将它们发送到对应的设备。

例如,以下的代码是将用户输入的字符存储在输入缓冲区中:

char c;
scanf("%c", &c);

当输入缓冲区中有字符时,如果程序需要输出其它内容到终端,那么它就不会立刻输出,而是先将输出存储在输出缓冲区中。当输出缓冲区被填满后,它才会输出到终端。如果程序运行结束前没有将输出缓冲区中的内容输出,系统会自动将缓冲区中的内容强制输出。

清除缓冲区的方法

有时候我们需要清除输入缓冲区和输出缓冲区中的内容,以便保证程序运行正确。以下是一些常见的清除缓冲区的方法:

1. 利用gets()函数读取缓冲区中剩余的内容
char buffer[1024];
gets(buffer);
2. 利用while循环读取缓冲区中的每个字符并将其丢弃
char c;
while ((c = getchar()) != '\n' && c != EOF);
3. 利用fflush函数清空缓冲区
fflush(stdin); //清空输入缓冲区
fflush(stdout); //清空输出缓冲区
fflush(stdin)函数

fflush(stdin) 函数是清空输入缓冲区的一种方法。对于输出缓冲区,标准C定义不允许使用 fflush(stdout) 函数清空,所以需要使用其它的方法来清空输出缓冲区。

尝试在输入缓冲区中插入数据是一个保证程序不可移植的行为。虽然在某些实现中, fflush(stdin) 可能会起作用,但是在其它的实现中可能会无效或者根本不起作用。

所以,我们建议不要使用 fflush(stdin) 函数来清空输入缓冲区,在需要清空缓冲区时建议使用其他的方法。

以上就是 fflush(stdin) 函数的介绍。需要注意的是,使用 fflush(stdin) 函数来清空输入缓冲区可能会导致程序运行不稳定,不建议使用。