【问题标题】:problems with scanf("%d\n",&i) [duplicate]scanf("%d\n",&i) 的问题 [重复]
【发布时间】:2012-03-19 22:43:07
【问题描述】:
对于此代码:
int i;
scanf("%d\n",&i);
在我输入两个数字之前,我无法停止我的程序。
我觉得很奇怪,我知道什么时候输入合适,scanf会返回1。
当我输入“12a 'Enter'”、“12 'Enter'2”等时,没关系,i = 12,似乎当我输入不同的int或输入'Enter'和另一个时, scanf 返回 1。
我错过了什么?
【问题讨论】:
-
-
-
@LihO 虽然scanf 在c++ 中可用,但使用istreams 会更合适。也许问题应该保留为c。
标签:
c++
c
format
scanf
formatted-input
【解决方案1】:
“当我使用scanf("%d\n",&i);时,我必须在输入两个数字后才能停止我的程序”
虽然这种格式使scanf 读取数字并将其存储到i,但这种“读取”仍在继续,直到找到非空白字符后跟\n。这就是输入1 2 使scanf 停止的原因。
在这种情况下,您不应在输入格式中指定换行符。
请改用scanf("%d",&i);。
【解决方案2】:
这是因为扫描文件中的'\n...
如果你想换行,只需输入:
printf ("\n");
它会给你一个空行...
【解决方案3】:
scanf("%d\n",&i);
读取数字直到出现非空白字符(忽略数字后的所有空格和'\n')。