我有一个应用程序,它输入10个不同的数字(小于100)。如果输入了除数字以外的任何内容,则应显示“无效输入”
例如:如果我输入的“C”不是介于1到100之间的数字,程序应显示“无效输入”
我不想将输入与所有字符和特殊符号进行比较
如果数字是一位数字,则isdigit()或isalpha()完成工作。
我该如何解决这个问题?
答案 0 :(得分:3)
我会使用类似这样的内容:scanf("%d", &variable)
并检查此函数的return value。除非你在stdin上有数字以外的东西,否则它会起作用。您可以将它放在循环中,并使用scanf()
函数的返回值来捕获此错误。
答案 1 :(得分:2)
如果数字是单个数字,则isdigit()或isalpha()可以 这份工作。
但您想检查1
和99
之间的数字(多个数字),在这种情况下,您可以在循环scanf或strtol中使用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)
函数之后的循环中插入此代码。