验证整数输入

时间:2013-06-24 06:31:49

标签: c variables

int a;
scanf("%d",&a);

如果将非数字字符作为scanf()语句的输入,我如何确保代码不起作用? [我需要一个不会让我将数据类型更改为char]

的解决方案

3 个答案:

答案 0 :(得分:2)

如果第一个字符不是数字,则%d将无法匹配,并且不会分配ascanf的返回值会告诉您已分配了多少项。如果它是一个,那么显然它至少部分是有效数字。如果它为零,则表示无法将其解析为数字,并且您可能希望发出错误信号。

答案 1 :(得分:2)

scanf返回代码会告诉您arg列表中有多少项被填充。这可能仍然不是你想要的:我认为你会发现输入“123four”仍将返回1,a = 123。

答案 2 :(得分:0)

您可以使用do while循环验证来自用户的输入 像:

int read,a;
do {
        read = scanf("%c", &a);
    }while(read != EOF && a != '\n'); //change validation here according to condition