首页技术fclose(stdin)(c语言中fclose是什么意思)

fclose(stdin)(c语言中fclose是什么意思)

编程之家2026-05-251184次浏览

本篇文章给大家谈谈fclose(stdin),以及c语言中fclose是什么意思对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

fclose(stdin)(c语言中fclose是什么意思)

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

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

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

例:

#include<conio.h>

#include<io.h>

#include<stdio.h>

fclose(stdin)(c语言中fclose是什么意思)

#include<string.h>

void flush(FILE*stream);

int main(void)

{

FILE*stream;

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

fclose(stdin)(c语言中fclose是什么意思)

/* 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()函数的作用

fflush是一个计算机函数,功能是冲洗流中的信息,该函数通常用于处理磁盘文件。fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中。

扩展资料其他用法:

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

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

printf("。。。。。。。。。。。");后面加fflush(stdout);可提高打印效率

拓展阅读

注意事项

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

MSDN文档里也清楚地写着:

fflush on input stream is an extension to the C standard(fflush操作输入流是对C标准的扩充)。

以下是 C99对 fflush函数的定义:

int fflush(FILE*stream);

如果stream指向输出流或者更新流(update stream),并且这个更新流最近执行的操作不是输入,那么fflush函数将把任何未被写入的数据写入stream指向的文件(如标准输出文件stdout)。否则,fflush函数的行为是不确定的。fflush(NULL)清空所有输出流和上面提到的更新流。如果发生写错误,flush函数会给那些流打上错误标记,并且返回EOF,否则返回0。

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

freopen在竞赛怎么用

freopen在竞赛的用法如下:

1、格式:FILE*freopen(constchar*filename,constchar*mode,FILE*stream);2、参数说明:filenme:要打开的文件名。mode:文件打开的模式,和fopen中的模式(r/w)相同。stream:文件指针,通常使用标准流文件(stdin/stdout/stderr)。返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。(一般可以不使用它的返回值)功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。通过调用freopen,就可以修改标准流文件的默认值,实现重定向。3、使用方法:因为文件指针使用的是标准流文件,因此我们可以不定义文件指针。接下来我们使用freopen()函数以只读方式r(read)打开输入文件slyar.in。freopen(“slyar.in”,“r”,stdin);然后使用freopen()函数以写入方式w(write)打开输出文件slyar.out。freopen(“slyar.out”,“w”,stdout);接下来的事情就是使用freopen()函数的优点了,我们不再需要修改scanf和printf,而是维持代码的原样就可以了。因为freopen()函数重定向了标准流,使其指向前面指定的文件。最后只要使用fclose关闭输入文件和输出文件即可。fclose(stdin);fclose(stdout);若要恢复句柄,可以重新打开标准控制台设备文件,只是这个设备文件的名字是与操作系统相关的。DOS/Windows:freopen(“CON”,“r”,stdin);Linux:freopen(“/dev/console”,“r”,stdin)。

以上就是freopen在竞赛的用法。

OK,本文到此结束,希望对大家有所帮助。

access数据库程序设计是什么(access编程语言)颤动的风火龙蛋有什么用?魔兽世界颤动的风火龙蛋有什么用