【发布时间】:2011-06-14 20:40:59
【问题描述】:
我最近偶然发现了一个奇怪的案例(至少对我来说,因为我以前没有遇到过)..考虑下面的简单代码:-
int x;
scanf("%d",&x);
printf("%d",x);
上面的代码接受一个普通的整数输入,并按预期显示结果..
现在,如果我将上面的代码修改为以下内容:-
int x;
scanf("%d ",&x);//notice the extra space after %d
printf("%d",x);
在给出 printf 语句的结果之前,这需要另一个额外的输入。我不明白为什么空格会导致 scanf() 的行为发生变化。任何人都可以向我解释一下...。
【问题讨论】:
-
scanf 是邪恶的,应该避免 - 所以说我和其他人:):stackoverflow.com/questions/456303/…
-
@Bukes: 是的,如果你不知道如何编程或阅读文档,你不应该使用 C
-
@Chris Dodd -
scanf无法区分换行符和其他空格。如果您想对输入进行精细控制,或者希望能够从错误中恢复正常,那么无论您对 C 的了解程度如何,都不能使用scanf。