![](/img/trans.png)
[英]What exactly happens when I input a string “abcd” to scanf(“%d”, &var)?
[英]What exactly happens when I use "scanf"?
我试图了解当我使用“scanf”function 时会发生什么,或者更具体地说,当我尝试使用“scanf”将字母输入 int 时会发生什么。
所以我明白当我试图将字母输入 int 时,它根本不起作用,所以我写了这个来检查发生了什么:
#include <stdio.h>
int main()
{
int num=0;
char term='a';
scanf("%d%c", &num, &term);
printf("%d%c", num, term);
return 0;
}
例如,当我输入“b”时,output 是“0a”,而我将它排除为“0b”,因为“scanf”不会将“b”输入到 num 中,然后他将其输入到“term”中.
有人知道为什么会这样吗? 我寻找答案并看到它与缓冲区相连,但我仍然不明白发生了什么。
如果在需要数字时输入非数字字符(如%d
格式),则scanf
将立即失败。
与其他格式和不匹配的输入类似,一旦检测到无效输入,function 就会失败并返回。
您应该始终检查scanf
返回的内容。
当scanf
失败时,它将把输入留在缓冲区中。 因此,下次您阅读时将获得该数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.