验证整数inout和一般情况

时间:2018-09-06 06:12:26

标签: c

我将如何验证用户输入了正确的输入,例如对于整数,因为我之前将变量声明为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;
}

1 个答案:

答案 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())进行扫描的方法是检查返回值;它会告诉您成功或失败的情况。