我有一个任务,用户必须一个接一个地输入四个输入。他们是: 字符、 float 、 float 、整数。
主要问题是如何检查错误并确保所使用的输入有效?
我已经完成了字符部分,但是对于 float 和整数,我如何检查只输入了数字并在输入字母或符号时打印错误消息?
可能是 isdigit()
或 isaplha()
但不确定如何实现它们的使用。
注意我已经使用 scanf()
作为输入但不确定如何检查输入是否有效?
最佳答案
如果要求用户输入一个字符串,两个 float 和一个整数,使用
char s[1024];
float f1, f2;
int i;
if (sscanf (buff, "%s %f %f %d", s, &f1, &f2, &i) == 4) {
/* Could scan values as expected. */
} else {
/* Input not as expected. */
}
因为 sscanf
返回成功扫描值的数量。有关详细信息,请参阅 sscanf 手册页。请注意,使用 %s
扫描无界字符串在大输入时会出现问题。这可能不是家庭作业的问题,但绝对是生产软件中需要注意的事情。
关于c - 如何验证输入是数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12368403/