Check data received by user

-2

How can I check if the user typed a data in the way I'm expecting?

For example, I want it to enter an integer value. How do I know if the value you typed was an integer and not a char or float , and if the entry is not an integer, send an error message and keep asking for an integer?

I have not started writing the code yet.

    
asked by anonymous 11.05.2018 / 20:40

1 answer

0

Very simple:

int eh_inteiro(const char *c) {
    int i = c[0] == '-' || c[0] == '+';
    if (!c[i]) return 0;
    while (c[i]) {
        if (c[i] < '0' || c[i] > '9') return 0;
        i++;
    }
    return 1;
}

Here's a test for it:

void testar(const char *c) {
    printf("%s: %s\n", c, eh_inteiro(c) ? "Sim" : "Não");
}

int main(void) {
    testar("123");
    testar("+123");
    testar("-123");
    testar("1");
    testar("0");
    testar("9");
    testar("999999");
    testar("-5");
    testar("-");
    testar("+");
    testar("");
    testar("banana");
    testar("123a");
    testar("12a3");
    testar(" ");
    testar(" 12");
    testar("12 ");
    testar("1 2");
}

Here's the output:

123: Sim
+123: Sim
-123: Sim
1: Sim
0: Sim
9: Sim
999999: Sim
-5: Sim
-: Não
+: Não
: Não
banana: Não
123a: Não
12a3: Não
 : Não
 12: Não
12 : Não
1 2: Não

See here working on ideone.

    
11.05.2018 / 22:26