2010-08-11 41 views
0

我有一个c程序,其中我接受2个数字作为输入。 我如何验证输入的数字是否只是数字而不是字符。验证输入到C程序

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); 
} 

[编辑]添加示例代码

+1

该代码将只要它需要。 – 2010-08-11 06:47:45

+0

已编辑的问题,不需要有限制。 – mielacademy 2010-08-11 06:51:09

+2

取决于您计划接受输入的方式 – 2010-08-11 06:54:47

回答

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返回声明。

3

除了其他有趣的建议(尤其是一个与scanf),你可能也想使用isdigit功能:

的ISDIGIT()函数将测试 C是否是类 位的字符在程序的当前语言环境中

请注意,该函数仅检查一个字符,而不是整个字符串。

诉诸已经完成的功能总是很好的做法;即使是在最简单的任务中,也可能不会意识到错综复杂的情况,这会让您成为一名优秀的程序员。

当然,在适当的时候你可能会想看看该函数是如何工作的,以便很好地理解底层逻辑。

+0

+1,但值得注意的是'isdigit'只适用于单个字符,不适用于整个字符串,因此需要测试逐个字符输入。 – dreamlax 2010-08-11 07:46:58

+0

@dreamlax是的,我应该更好地指出。依据编辑过的问题。谢谢 – lorenzog 2010-08-11 08:43:16