C语言中 fflush 与 free 有什么区别?

作者&投稿:阎云 (若有异议请与网页底部的电邮联系)
C语言fflush(stdin)函数是什么意思,在什么情况下用它~

1、fflush(stdin)是清空输入缓冲区的意思。stdin就是标准输入 std即standard(标准),in即input(输入),合起来就是标准输入。 一般就是指键盘输入到缓冲区里的东西。
2、在清除文件缓冲区时使用,文件以写方式打开时将缓冲区内容写入文件。
例:
#include
#include
#include
#include
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)

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

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


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

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

莒县19513711417: 请高手提供一些C语言中常用的库函数,并说明它的作用和所在头文件. -
鄂娟幸露: 字符处理函数 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换 头文件 ctype.h 函数列表 函数类别 函数用途 详细说明 字符测试 是否字母和数字 isalnum 是否字母 isalpha 是否控制字符 iscntrl 是否数字 isdigit 是否可...

莒县19513711417: c语言中有没有这样的库函数,作用是清除cache中的内容 -
鄂娟幸露: fflush() ;清除标准输入缓存. 函数名: fflush 功 能: 清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件 原型:int fflush(FILE *stream) 程序例: #include <string.h> #include <stdio.h> #include <conio.h> #include <io.h> void flush(...

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

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

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

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

莒县19513711417: c语言中fflush函数清除的缓存区,到底是个啥?具体在磁盘中的位置是哪儿?
鄂娟幸露: 清除文件缓冲区.就相当于一个临时文件吧.具体在哪里...我也说不清楚...操作系统怎么处理的不太了解...可以理解在主存里.反正文件缓冲区在程序释放之后就一起释放了.而且这也不是标准c的命令.

莒县19513711417: C语言中清除缓冲区很重要吗? -
鄂娟幸露: 如果缓冲区是在栈里分配的话是不需要清除的,因为系统会帮你做这个工作,但是如果缓冲区是分配在堆里的话就要自己手动清除了,不然会发生内存泄露,就是虽然不使用,但占用的资源仍然不能释放,会影响系统性能.清除缓冲区有三种...

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