fflush()函数刷新输入流

fflush()函数刷新输入流,第1张

fflush()

清除标准输入缓存。

函数名: fflush

功 能: 清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件

原型:int fflush(FILE *stream)

程序例:

#include <string.h>

#include <stdio.h>

#include <conio.h>

#include <io.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 的返回值类型是int类型,那么这个int类型具体的返回是什么呢?

返回值:

如果成功刷新,fflush返回0。指定的流没有缓冲区或者只读打开时也返回0值。返回EOF指出一个错误。

注意:如果fflush返回EOF,数据可能由于写错误已经丢失。当设置一个重要错误处理器时,最安全的是用setvbuf函数关闭缓冲或者使用低级I/0例程,如open、close和write来代替流I/O函数。

fflush()函数

fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃

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

注意事项:

C和C++的标准里从来没有定义过 fflush(stdin)。也许有人会说:“可是我用 fflush(stdin) 解决了这个问题,你怎么能说是错的呢?”的确,某些编译器(如VC6)支持用 fflush(stdin) 来清空输入缓冲,但是并非所有编译器都要支持这个功能(linux 下的 gcc 就不支持),因为标准中根本没有定义 fflush(stdin)。

缓冲区大小,以及缓冲区的刷新机制属于 *** 作系统特性。C++标准规定了在输出换行符,调用flush()函数,缓冲区已满以及程序终止前必须刷新输出缓冲区,其他时候表现取决于 *** 作系统。Windows和Linux下的表现就不相同,如果你在Linux下执行cout<<"ss",然后暂停程序,会发现屏幕上并没有输出任何内容。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8910263.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-22
下一篇2023-04-22

发表评论

登录后才能评论

评论列表(0条)

    保存