重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
fflush功能:清除读写缓冲区。
10余年的德阳网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整德阳建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“德阳网站设计”,“德阳网站推广”以来,每个客户项目都认真落实执行。
fflush(stdin)是用来清空输入缓冲区,通常是为了确保不影响后面的数据读取,
例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin)。
但要注意的是,此函数仅适用于部分编译器(如VC6),
但是并非所有编译器都要支持这个功能(如gcc4.6)。
这是一个对C标准的扩充。
fflush()是标准I/O函数中的一个,从其字面意思也可以看出来是冲洗,刷新的意思。大家知道,在程序中进行读写操作的时候,一般情况下都要进行缓冲的,也就是将要读写的内容先保存到一块内存区域,这块内存区域就叫做“缓冲区”,然后在对这个缓冲区进行操作,一匹配不同的设备的读写速率不同的问题。所以很多时候,读写并不是立马就有效的,因为读写的内容被缓冲了。所以,在你想要立马显现效果的时候,可以对缓冲区的内容进行主动刷新,调用ffluash()函数,就是这个功能。此函数可以将缓冲区内任何没有写的数据发送到由一个文件指针指定的输出文件中去,这个过程也叫做刷新缓冲区。
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("\nFile 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)