【问题标题】:What exactly happens when I use "scanf"?当我使用 \"scanf\" 时到底发生了什么?
【发布时间】:2022-11-27 00:36:39
【问题描述】:

我试图了解当我使用“scanf”函数时会发生什么,或者更具体地说,当我尝试使用“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”时,输出是“0a”,而我排除它是“0b”,因为“scanf”不会将“b”输入到 num 中,然后他将它输入到“term”中.

有人知道为什么会这样吗?我寻找答案并看到它与缓冲区相连,但我仍然不明白发生了什么。

【问题讨论】:

    标签: c


    【解决方案1】:

    如果在需要输入数字时输入非数字字符(如 %d 格式),则 scanf 将失败立即地.

    类似地,对于其他格式和不匹配的输入,一旦检测到无效输入,该函数就会失败并返回。

    你应该经常检查什么scanfreturns

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      相关资源
      最近更新 更多