在C语言编程中什么时候需要用fflush(stdin)?
展开全部
一般在输入之后,比如scanf()之后.因为回车符号会留在缓冲区中,所以需要fflush(stdin)来清除回车及其他无用符号,清除缓冲区,以免第二次scanf()时,把之前残留的无用符号输入变量中.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-15
展开全部
我只知道对于stdout是强制刷新,对于stdin还真不知道,所以查了一下。 http://www.cplusplus.com/reference/clibrary/cstdio/fflush.htmlIf the given stream was open for writing and the last i/o operation was an output operation, any unwritten data in the output buffer is written to the file.如果是输出,上一个操做是写入,那么将会把未写入的缓冲内容写入文件。If it was open for reading and the last operation was an input operation, the behavior depends on the specific library implementation. In some implementations this causes the input buffer to be cleared, but this is not standard behavior.如果是输入,这将取决于库的实现。在一些实现版本中,这将导致输入缓冲被清空,但这不是标准操作。If the argument is a null pointer, all open files are flushed.The stream remains open after this call.如果函数的参数是空,将导致所有的文件被刷新,并且文件的开启属性不变。When a file is closed, either because of a call to fclose or because the program terminates, all the buffers associated with it are automatically flushed.当文件被关闭,或者因为程序终止而关闭,文件的缓冲区都被刷新。所以,fflush(stdin)可能会清空stdin缓冲区。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-15
展开全部
getchar()之前要加上fflush(stdin)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询