| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3450 人关注过本帖
标题:使用数组输出时运行结果不是想要的,不明白哪里出错
只看楼主 加入收藏
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
快速回复:使用数组输出时运行结果不是想要的,不明白哪里出错
数据加载中...
 
   



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

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