繁体   English   中英

当我使用“scanf”时到底发生了什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM