C语言fflush(stdin)函数是什么意思,在什么情况下用它

作者&投稿:周方 (若有异议请与网页底部的电邮联系)
C语言中“fflush(stdin)”的作用是什么?~

清除标准输入设备(一般是键盘)的缓存。

scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。
① 遇空格、“回车”、“跳格”键。
② 遇宽度结束。
③ 遇非法输入。
键盘缓冲区就可能有残余信息问题。
scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中
解决就要在scanf()函数之后加个fflush(stdin)。

flush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上。

fflush(stdin)中stdin是标准输入的意思。
fflush(stdin)的作用是清空标准输入缓冲区。

举例说明如下:
int a;char c;scanf("%d",&a); fflush(stdin); // 清空输入缓冲区scanf("%c",&c);如果不加fflush(stdin)的话,第一次输入的回车可能会被第二次输入操作所捕捉,也即变量c的值将会是回车符,并不会接收用户输入的字符。

1、fflush(stdin)是清空输入缓冲区的意思。stdin就是标准输入 std即standard(标准),in即input(输入),合起来就是标准输入。 一般就是指键盘输入到缓冲区里的东西。

2、在清除文件缓冲区时使用,文件以写方式打开时将缓冲区内容写入文件。

例:

#include <conio.h>

#include <io.h>

#include <stdio.h>

#include <string.h>

void flush(FILE *stream);

int main(void)

{

FILE *stream;

char msg[] = "This is a test";

/* create a file */

stream = fopen("DUMMY.FIL", "w");

/* write some data to the file */

fwrite(msg, strlen(msg), 1, stream);

clrscr();

printf("Press any key to flush DUMMY.FIL:");

getch();

/* flush the data to DUMMY.FIL without closing it */

flush(stream);

printf("
File was flushed, Press any key to quit:");

getch();

return 0;

}

void flush(FILE *stream)

{

int duphandle;

/* flush the stream's internal buffer */

fflush(stream);

/* make a duplicate file handle */

duphandle = dup(fileno(stream));

/* close the duplicate handle to flush the DOS buffer */

close(duphandle);

}

扩展资料

使用fflush的注意事项

1、MSDN 文档里也清楚地写着:fflush on input stream is an extension to the C standard (fflush 操作输入流是对C标准的扩充)。以下是 C99 对 fflush 函数的定义:int fflush(FILE *stream);

2、如果stream指向输出流或者更新流(update stream),并且这个更新流最近执行的操作不是输入,那么fflush函数将把任何未被写入的数据写入stream指向的文件(如标准输出文件stdout)。

3、fflush函数的行为是不确定的。fflush(NULL)清空所有输出流和上面提到的更新流。如果发生写错误,flush函数会给那些流打上错误标记,并且返回EOF,否则返回0。

4、如果 stream 指向输入流(如 stdin),那么 fflush 函数的行为是不确定的。故而使用 fflush(stdin) 是不正确的。

参考资料来源:百度百科—fflush(stdin)



1.fflush函数包含在stdio.h头文件中,用来强制将缓冲区中的内容写入文件。
2.函数原型:int
fflush(FILE
*stream)
;
3.函数功能:清除一个流,即清除文件缓冲区,当文件以写方式打开时,将缓冲区内容写入文件。也就是说,对于ANSI
C规定的是缓冲文件系统,函数fflush用于将缓冲区的内容输出到文件中去。
4.函数返回值:如果成功刷新,fflush返回0。指定的流没有缓冲区或者只读打开时也返回0值。返回EOF指出一个错误。
5.下面给出一个具体的例子来演示该函数使用的方法:
#include
<stdio.h>
#include
<stdlib.h>
int
main(void){
FILE
*fp;
if((fp=fopen("test",
"rb"))==NULL)
{
printf("Cannot
open
file.\n");
exit(1);
}
char
ch
=
'C';
int
i;
for(i=0;
i<5;
i++)
{
fwrite(ch,
sizeof(ch),
1,
fp);
fflush(fp);
}
fclose(fp);
return
0;
}
注意:如果在写完文件后调用函数fclose关闭该文件,同样可以达到将缓冲区的内容写到文件中的目的,但是那样系统开销较大。

fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
fflush(stdout)刷新标注输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上

这是用来清除输入后的缓存数据的,比如你写个程序只允许输入数字,然后就可以循环,如果你这时输入了一个字符,这时一个字符就是非法得了,一直保留在缓存空间里,如果不处理掉可能会照成死循环…这时你就可以用这个代码清除缓存…

1.fflush函数包含在stdio.h头文件中,用来强制将缓冲区中的内容写入文件。
2.函数原型:int fflush(FILE *stream) ;
3.函数功能:清除一个流,即清除文件缓冲区,当文件以写方式打开时,将缓冲区内容写入文件。也就是说,对于ANSI C规定的是缓冲文件系统,函数fflush用于将缓冲区的内容输出到文件中去。
4.函数返回值:如果成功刷新,fflush返回0。指定的流没有缓冲区或者只读打开时也返回0值。返回EOF指出一个错误。
5.下面给出一个具体的例子来演示该函数使用的方法:
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
if((fp=fopen("test", "rb"))==NULL) {
printf("Cannot open file.\n");
exit(1);
}
char ch = 'C';
int i;
for(i=0; i<5; i++) {
fwrite(ch, sizeof(ch), 1, fp);
fflush(fp);
}
fclose(fp);
return 0;
}
注意:如果在写完文件后调用函数fclose关闭该文件,同样可以达到将缓冲区的内容写到文件中的目的,但是那样系统开销较大。


C语言 fflush函数用法
fflush(stdin); 清空输入缓冲区。你的问题 是 统计用的计数器要清0,与 fflush 无关。把 fflush(stdin);改为: letter=0;number=0;space=0;others=0;

在C语言中fflish代表什么
是不是fflush函数?函数名:fflush 功 能:清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件

C语言中 fflush 与 free 有什么区别?
程序在操作文件时,为了提高效率,存在输入输出缓冲区。当然你要操作文件,因为文件不在我们程序里面。所以首先要建立程序和文件的链接。fflush是把输入输出缓冲区中的内容写入文件中。free是释放与文件的链接资源。

C语言中flushall()和fflush(stdin)有什么区别?
flushall将刷新所有打开的输入设备,包括标准设备和文件设备,fflush(stdin)只刷新标准输入。

c语言中的fflush(stdin)到底怎么用?我查了好多资料,但一直不知道什么时...
在输入单个字符(scanf("%c", &ch) 或getchar())前或使用gets()函数前,加fflush(stdin) ;清除缓存中的垃圾数据,使得程序可以正确输入你想输入的数据

在C语言编程中什么时候需要用fflush(stdin)?
接受输入之前 一般scanf之前 其他的诸如getchar之类的但凡是需要接受输入的函数使用前最好使用这个函数 当然 这个函数不是标准函数库里的函数 可以自己写个代替他 while(getch()!='\\0');

关于c语言函数,看图,我想要的结果是eeee在屏幕上停留3秒后消失,为什么...
出现以下几种情况之一,输出缓冲区的内容会被发送到标准输出(比如显示器),这叫做刷新缓冲区:1.行缓冲输出遇到换行符时;2.需要输入时;3.缓冲区满时;4.程序结束时;5.调用强制刷新输出缓冲区的函数fflush(stdout)时。虽然不知道清屏函数clrscr()的具体实现,不过它也会导致输出缓冲区被刷新,并且...

C语言中流是什么意思?
C语言的I\/O系统为用户提供了一个接口,该接口与实际的存取设备无关。只是设备的一个抽象表示形式。这个抽象的接口称为流,实际的设备称为文件。C文件系统可以与各种设备一起使用,如打印机、硬盘、终端等,缓冲文件系统可以将每个设备转换成逻辑设备,即所谓的流。所有的流工作方式类似,所以很容易操作不...

C语言 判断输入学号是否重复问题
fflush(stdin);printf("输入错误,请重新输入.\\n");} }while(stu[count].no >100 || stu[count].no < 1);fflush(stdin);printf("姓名:");gets(stu[count].name);printf("三门成绩:\\n");do { printf("C语言:");scanf("%d",&stu[count].C);if(stu[count].C<0||stu[count].C...

C# 有类似c语言清除缓冲区的函数fflush(stsin)吗
C# 有类似c语言清除缓冲区的函数fflush(stsin)吗 C#没有类似c语言清除缓冲区的函数fflush(stsin)

吐鲁番市13898837826: C语言fflush(stdin)函数是什么意思,在什么情况下用它我在有些C程序中见到fflush(stdin),不知道它是干什么用的,请问在什么情况下用它?另外,本人的联... -
御厕益母:[答案] 清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件 没有你后面说的那个. 例子: #include #include #include #include voidflush(FILE*stream); intmain(void) { FILE*stream; charmsg[]="Thisisatest"; str...

吐鲁番市13898837826: C语言fflush(stdin)函数是什么意思,在什么情况下用它 -
御厕益母: 清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件 没有你后面说的那个. 例子: #include#include#include#includevoid flush(FILE *stream); int main(void) { FILE *stream; char msg[] = "This is a test"; stream = fopen("DUMMY....

吐鲁番市13898837826: fflush(stdin)函数的作用是什么?
御厕益母: 应该叫做 清除输入设备的缓冲区 一般情况下,是用来清除键盘输入的. 如果你用过scanf,那么它总会有个回车无法读入,而且会影响下次的正常读取, 这时,一般就用fflush(stdin)来清除这个回车.

吐鲁番市13898837826: 在C语言编程中什么时候需要用fflush(stdin)? -
御厕益母: fflush函数刷新一个流,可以用来防止内存地址已经占满,当把这个流指向用户标准输入(stdin)时,可以清除目前缓冲区中的内容,输入回车也会被清楚掉,例如,在scanf()之后使用fflush(stdin)是当输入缓冲区(内存)满了的时候,自动清除输入流缓冲区中所有数据,其实现在内存这么大,每次输入的数据只有几个字节,是几乎用不上的,多用上的地方是在嵌入式开发上面,因为每个固化芯片上一般只有几十K的空间,所以空间显得非常重要,此时就要用上了

吐鲁番市13898837826: fflush(stdin);C语言中的这个函数起什么作用 -
御厕益母: 在c语言中使用scanf()函数在键盘上接受字符型数据时,必须用fflush(stdin)这个来清楚上一次存储的数据,不然字符型数据不会正确的存储.

吐鲁番市13898837826: C语言里为什么要用到fflush(stdin);? -
御厕益母: 首先要明白,从键盘输入的数据会先存到缓冲区,然后在存放到内存中.但是数据存放到内存中之后,缓冲区的数据并没有释放.如果不给电脑一个清空缓冲区的命令就会造成输入无效的情况.所以需要用到fflush(stdin)释放缓冲区.具体在C语...

吐鲁番市13898837826: C语言中的fflush(stdin)是清除什么缓冲区?还有清除什么区的? -
御厕益母: 你写的这个是清除文件缓冲区的,我们可写方式打开一个文件,一般是把文件的内容映射到内存中,最后再写入到文件.还有一个清除输入缓冲区,不一定只是回车啊,也有可能是什么字符啊之类的,就是你从键盘上敲进去的东西,直接调fflush()就可以

吐鲁番市13898837826: C语言 fflush(stdin)是什么意思 -
御厕益母: 清空输入缓冲区. scanf("%d",&a); scanf("%c",&c); 经常如果这种情况的话,第一次输入的回车可能会被第二次输入操作所捕捉,这个的作用就是清空缓冲,这样就不会出现这种情况了.

吐鲁番市13898837826: c语言中的fflush(stdin)到底怎么用?我查了好多资料,但一直不知道什么时候该用什么时候不 -
御厕益母: 在输入单个字符(scanf("%c", &ch) 或getchar())前或使用gets()函数前,加fflush(stdin) ;清除缓存中的垃圾数据,使得程序可以正确输入你想输入的数据

吐鲁番市13898837826: c语言sys()fflush()用法 -
御厕益母: fflush(stdin) ;清空输入缓冲区,通常是为了确保不影响后面的数据读取(例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin);)sys()这个函数在C语言中不存在,我猜你说的是system()函数,这个函数可以执行系统命令,如:system("pause");表示执行到此处要暂停,等待按任意键继续执行.system("cls");表示清屏.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网