Beh... io ho sviluppato questa funzione:
codice:
int intero(char *x, int pos) {
int result = 0;
if (x[pos]) {
result = (x[pos] >= '0' && x[pos] <= '9' && intero(x, pos+1));
} else {
result = -1;
}
return result;
}
Questa funzione restituisce 0 se la stringa passata NON rappresenta un intero.
Va utilizzata nel modo seguente:
codice:
char *miaStringa;
/* Controllo se il primo carattere è il segno */
if (miaStringa[0] == '-' || miaStringa[0] == '+') {
if (intero(miaStringa, 1)) {
printf("E' un intero!!\n");
} else {
printf("NON è un intero!!");
}
} else {
if (intero(miaStringa, 0)) {
printf("E' un intero!!\n");
} else {
printf("Non è un intero!!\n");
}
}
Nella funzione non è implementato il controllo del primo carattere per il segno (quindi non funzionerebbe se gli si passa, per esempio, "-12"), perciò questo va fatto a parte, ma è banale.
Ciao.