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.