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.