如何区分两位数字(65)和一个字符(' a')?

时间:2015-02-24 11:17:30

标签: c

我有一个应用程序,它输入10个不同的数字(小于100)。如果输入了除数字以外的任何内容,则应显示“无效输入”

例如:如果我输入的“C”不是介于1到100之间的数字,程序应显示“无效输入”

我不想将输入与所有字符和特殊符号进行比较

如果数字是一位数字,则isdigit()或isalpha()完成工作。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

我会使用类似这样的内容:scanf("%d", &variable)并检查此函数的return value。除非你在stdin上有数字以外的东西,否则它会起作用。您可以将它放在循环中,并使用scanf()函数的返回值来捕获此错误。

答案 1 :(得分:2)

  

如果数字是单个数字,则isdigit()或isalpha()可以   这份工作。

但您想检查199之间的数字(多个数字),在这种情况下,您可以在循环scanfstrtol中使用isdigit()或{{3}}:

使用strtol的示例:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char str[32];
    char *end;
    long num;

    printf("Enter a number between 1 and 99:\n");
    fgets(str, sizeof str, stdin);
    num = strtol(str, &end, 10);
    if ((num < 1) || (num > 99) || (*end != '\n')) {
        printf("Error\n");
    } else {
        printf("%ld\n", num);
    }
    return 0;
}

答案 2 :(得分:-1)

我想你在循环中得到了数字吗?如果是,则可以添加if语句来控制插入的值。

if (num>=0 && num <=100)
//code
else
printf("Invalid input");

然后在scanf("%d",&variable)函数之后的循环中插入此代码。