我有一个c程序,其中我接受2个数字作为输入。 如何验证输入的输入是否仅为数字而不是字符。
void main()
{
int a,b;
printf("Enter two numbers :");
scanf("%d%d",&a,&b);
printf("Number 1 is : %d \n Number 2 is : %d",a,b);
}
[编辑]添加了示例代码
答案 0 :(得分:3)
除了其他有趣的建议(特别是scanf
的建议),您可能还想使用isdigit函数:
isdigit()函数应该测试 c是否是一个类的字符 程序当前区域设置中的数字
请注意,此函数仅检查一个字符,而不是整个字符。
采用已经建成的功能总是好的做法;即使在最简单的任务中,你也可能没有意识到错综复杂,这将使你成为一个优秀的程序员。
当然,在适当的时候,您可能希望了解该功能如何有效地掌握基础逻辑。
答案 1 :(得分:2)
scanf
返回已成功扫描的项目数。如果您要求两个带有%d%d
的整数,并且scanf
返回2,那么它会成功扫描这两个数字。任何小于2的数字表示scanf
无法扫描两个数字。
int main()
{
int a,b;
int result;
printf("Enter two numbers :");
result = scanf("%d%d",&a,&b);
if (result == 2)
{
printf("Number 1 is : %d \n Number 2 is : %d",a,b);
}
else if (result == 1)
{
// scanf only managed to scan something into "a", but not "b"
printf("Number 1 is : %d \n Number 2 is invalid.\n", a);
}
else if (result == 0)
{
// scanf could not scan any number at all, both "a" and "b" are invalid.
printf("scanf was not able to scan the input for numbers.");
}
}
scanf
可能返回的另一个值是EOF
。如果从流中读取错误,它可能会返回此信息。
另请注意,main
会返回int
,但您会在void
返回时声明它。