我最近偶然发现了一个奇怪的情况下(ATLEAST对我来说,因为我没有这个遇到过)..考虑下面的简单代码: -scanf()好奇的行为!
int x;
scanf("%d",&x);
printf("%d",x);
上面的代码需要一个正常的整数输入并显示结果如预期..
现在,如果我修改了上面的代码如下: -
int x;
scanf("%d ",&x);//notice the extra space after %d
printf("%d",x);
这需要在另一个额外的输入它给人的printf语句的结果之前..我不理解为什么一个空间结果LTS在scanf()的..谁能解释这对我的行为的变化....
scanf是EVIL,应该避免 - 所以说我和其他人:):http:// stackoverflow。com/questions/456303/how-to-validate-input-using-scanf – Bukes 2011-06-14 21:13:05
@Bukes:是的,如果你不知道如何编程或阅读文档,你不应该使用C – 2011-06-14 21:20:21
@Chris Dodd - 'scanf'无法区分换行符和其他空格。如果你想要很好地控制你的输入,或者从错误中清除错误,你不能使用'scanf',不管你怎么知道C。 – 2011-06-14 21:23:50