int a;
scanf("%d",&a);
scanf()
如果将非数字字符作为语句的输入,我如何确保代码不起作用?[我需要一个不会让我将数据类型更改为的解决方案char
]
如果第一个字符不是数字,则%d
匹配失败,a
不会被赋值。的返回值scanf
告诉您分配了多少项目。如果是一个,那么显然它至少部分是一个有效的数字。如果它为零,这意味着它不能被解析为一个数字,你可能想发出错误信号。
返回码将scanf
告诉您 arg 列表中有多少项已填充。这可能仍然不是您想要的:我想您会发现输入“123four”仍将返回 1,其中 a=123。
您可以使用 do while 循环来验证来自用户的输入,例如:
int read,a;
do {
read = scanf("%c", &a);
}while(read != EOF && a != '\n'); //change validation here according to condition