【问题标题】:reading character for scanf when it is suppose to be an int当它被认为是一个 int 时,为 scanf 读取字符
【发布时间】:2020-09-16 04:43:44
【问题描述】:

我正在使用 scanf 读取 int,但是,如果有人放入 int 以外的内容,我会创建一个错误。我注意到,如果我为 scanf("%d",%number); 输入一个字符,它会将其保存为 0。我希望 0 成为一个选项。我该如何避免这个问题?

测试代码是 整数; scanf("%d",&number); printf("%d",number);

【问题讨论】:

  • 始终检查scanf returns 的内容。请记住,如果scanf 无法将输入与格式匹配,那么它将返回并保持输入不变(在下一次调用scanf 时读取)。这就是为什么建议阅读整行(使用例如fgets)并使用例如解析它的原因。 sscanfstrtol.

标签: c scanf


【解决方案1】:

试试这个方法,看看输入的是不是数字%d

#include <stdio.h>

int main(void) {
    int number;

    if (scanf("%d", &number))
        printf("A number!\n");
    else
        printf("Not a number!\n");

    return 0;
}

【讨论】:

    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多