标题:scanf()必须和fflush()一起用才能不出现论坛最近经常提的错误
只看楼主
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
结帖率:100%
 问题点数:0 回复次数:8 
scanf()必须和fflush()一起用才能不出现论坛最近经常提的错误
最近大家总是遇到输入问题,就是用scanf("%d",&n)的时候输入的值经常报错,就是逻辑上是没有问题得,但是结果一直错.其实是涉及一个FFlush( )函数问题.下面是一段关于java上关于FFlush( )的类似的解释.


Topic: 谁能解释一下System.out.flush()的作用
  Print this page  

--------------------------------------------------------------------------------
1.谁能解释一下System.out.flush()的作用  Copy to clipboard
Posted by: zwj0231075
Posted on: 2006-01-02 10:51

谁能帮我解释一下System.out.flush()的作用,可以给出一个简单的实例吗??
谢谢!!  

--------------------------------------------------------------------------------
2.Re:谁能解释一下System.out.flush()的作用 [Re: zwj0231075] Copy to clipboard
Posted by: why
Posted on: 2006-01-02 11:05

For this kind of question, please check the Java API:
[url]http://java.[/url]()
public void flush()
Flush the stream. This is done by writing any buffered output bytes to the underlying output stream and then flushing that stream.

If you spend a little time to google for System.out.flush(), you should be able to find something similar to the following:
When System.out.print() or System.out.println() is performed, the printed text doesn't go straight to the screen. Instead, the text gets sent to a special memory buffer, from which it will eventually be written to the screen. However, sometimes events can occur that will stop the buffer from being written to the screen (another process may write to the screen, for example). System.out.flush() forces the buffer to be immediately written to the screen

[url]https://classes.yale.edu/cpsc112a/help/faq.html#flush[/url]  
个人理解就是,用scanf得时候是送到缓冲区了,没有送到内存里面,应该用flush()把缓冲的数据送到内存里面.
搜索更多相关主题的帖子: scanf fflush 论坛 用才 System 
2008-01-11 20:43
岳C
Rank: 1
等 级:禁止发言
帖 子:354
专家分:0
注 册:2007-7-16
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

坚持到底
2008-01-11 22:44
zhiqiang
Rank: 1
来 自:中国沈阳
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-4-24
得分:0 
在使用c的时候通常不会出现这种问题

2008-01-11 22:56
GNUREN
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2007-10-3
得分:0 
有些该功能函数的函数比scanf 好,换着用

问君何能尔,心远地自偏。 采菊东篱下,悠然见南山。
2008-01-11 23:01
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
有些东西是共同的啊,虽然是java但是fflush()是差不多得,因为好多人用scanf用错啊,所以给大家看看啊,如果有不对的地方提出来大家讨论啊
2008-01-11 23:11
nobush
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2008-1-10
得分:0 
不是必須的,依場合而定。
比如這個帖子就是一例。 [url]http://bbs.[/url]

另外你的理解反了,scanf是從緩衝區讀取不是送入
2008-01-12 16:21
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
我写的急了,昨天玩上急着回去睡觉就没太仔细看.
2008-01-12 16:35
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
我觉得不是依场合而定,要是你有个循环的输入,不用的话,是会出错得.
2008-01-12 16:37
tangweimin
Rank: 1
来 自:湖南郴州
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-2-7
得分:0 
我刚刚看明白的:“清除缓冲区。比如你逐个输入字符,他帮你缓冲掉你每输入一个字符后面所敲的回车键。否则回车也会被当成字符保存进去。”另外给有需要的朋友们一个链接,C/C++语言误区之:fflush(stdin)“http://hi.baidu.com/%C8%FC%C4%C9%D0%D0%D0%C7/blog/item/fa10666eb2a397de80cb4a56.html”
2012-02-08 20:17



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




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

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