Ciao a tutti! Mi sto esercitando per superare l'esame di fondamenti di informatica e mi sono bloccato su un esercizio proposto dal libro:
"Scrivere un programma che, letto da tastiera un singolo carattere, verifichi se è un carattere alfabetico (si può utilizzare la funzione isalpha dichiarata in ctype.h). In caso lo sia, stampi a video se questo è maiuscolo o minuscolo, altrimenti segnali errore. Sfruttare le funzioni di libreria definite in ctype.h come isupper e islower."
Il codice che ho scritto è questo, ma qualunque carattere io scriva da tastiera, mi stampa a video il messaggio di errore. Ho provato a togliere la parte di codice che prevede l'inserimento da tastiera con una semplice definizione della variabile "c" come carattere e funziona normalmente, quindi credo che il problema stia nella fgets (quell'atoi non mi convince in effetti). Sapete aiutarmi? Ve ne sarei molto grato
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
char buf[80];
int c;
fgets(buf, sizeof(buf), stdin);
c = atoi(buf);
if( isalpha(c) ) {
if( islower(c) ) {
printf("%c e' un carattere minuscolo\n", c);
}
if( isupper(c) ) {
printf("%c e' un carattere maiuscolo\n", c);
}
} else {
printf("Errore: carattere inserito non valido\n");
}
return 0;
}