标题:使用数组输出时运行结果不是想要的,不明白哪里出错
只看楼主
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:3 
注意事项编辑
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),并且这个更新流最近执行的操作不是输入,那么flush函数将把任何未被写入的数据写入stream指向的文件(如标准输出文件stdout)。否则,flush函数的行为是不确定的。fflush(NULL)清空所有输出流和上面提到的更新流。如果发生写错误,flush函数会给那些流打上错误标记,并且返回EOF,否则返回0。
由此可知,如果 stream 指向输入流(如 stdin),那么 fflush 函数的行为是不确定的。故而使用 fflush(stdin) 是不正确的。                                        ----摘自百度百科
2016-04-14 09:29
小嘉学代码
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-4-13
得分:0 
回复 10楼 alice_usnet
谢谢,我今天早上起来终于发现了那个问题并改正了。但还是很感谢。至于你说的这个fflush(stdin)我并不是很了解,只是别人教我的,而我稍微百度了一下,试了之后发现可以,于是就这样用了。毕竟我还只是个新手,哪知道这么多这类问题。
2016-04-14 12:49
小嘉学代码
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-4-13
得分:0 
回复 11楼 wanglianyi1
谢谢你的回复,虽然感觉不怎么看得懂,但我大致明白了,以后不用这个了,换个别的方法好了
2016-04-14 12:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-463618-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.759687 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved