我将如何验证用户输入了正确的输入,例如对于整数,因为我之前将变量声明为ints。 (平均字母将获得数字输入。)
此外,还有更通用的验证输入和获取输入的方法;除了使用scanf之外?
#include <stdio.h>
int main() {
printf("We will check if your number is odd, even, zero or negative \n");
int input;
printf("Enter your number: \n");
scanf("%d", &input);
if (input < 0){
printf("Number is Negative \n");
}
else if (input == 0){
printf("Number is Zero \n");
}
else if (input % 2 == 0){
printf("Number is Even \n");
}
else if (input % 2 == 1){
printf("Number is Odd \n");
}
return 0;
}
答案 0 :(得分:2)
使用scanf()
系列意味着对于给定的转换说明符(在这种情况下为“%d”->整数),输入是采用理想语法的。
相反,如果要验证输入语法的正确性,则需要将输入作为一个整体,然后自己对其进行解析。
您可以使用例如fgets()
(https://en.cppreference.com/w/c/io/fgets)。
一旦将输入保存在“字符串”(数组或分配的内存中的字符)中,就可以使用多个sscanf()
(https://en.cppreference.com/w/c/io/fscanf)来开始“猜测”。对于已经在内存中的字符串,这比在输入流中容易得多。因为“部分成功后可能会做出错误的猜测,请从头开始再试一次”在内存中很容易但是在输入时很难。
正如SomeProgrammerDude所评论的那样,尝试使用sscanf()
(在内存中或在输入中为scanf()
)进行扫描的方法是检查返回值;它会告诉您成功或失败的情况。