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

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

4

3 回答 3

2

如果第一个字符不是数字,则%d匹配失败,a不会被赋值。的返回值scanf告诉您分配了多少项目。如果是一个,那么显然它至少部分是一个有效的数字。如果它为零,这意味着它不能被解析为一个数字,你可能想发出错误信号。

于 2013-06-24T06:34:57.567 回答
2

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

于 2013-06-24T06:35:16.457 回答
0

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

int read,a;
do {
        read = scanf("%c", &a);
    }while(read != EOF && a != '\n'); //change validation here according to condition
于 2013-06-24T06:40:37.940 回答