Ho problemi nel risolvere il quesito evidenziato in grassetto nella traccia qui sopra. Infatti sembra che quando entra nel ciclo della funzione calcolo simboli() il confronto sia sempre verificato e incrementa il contatore anche se il carattere è alfanumerico. Come mai?codice:Realizzare un programma C che legga un file di testo e produca il seguente output: Calcolo del numero totale di caratteri inseriti nel file e relativa visualizzazione; Calcolo del numero di occorrenze di ogni carattere non alfanumerico e relativa visualizzazione; Copia su disco del file di testo letto.
codice:/*Realizzare un programma C che legga un file di testo e produca il seguente output: Calcolo del numero totale di caratteri inseriti nel file e relativa visualizzazione; Calcolo del numero di occorrenze di ogni carattere non alfanumerico e relativa visualizzazione; Copia su disco del file di testo letto.*/ #include<stdio.h> void letturatesto(FILE *output); void stampatesto(FILE *output); void calcolosimboli(FILE *output); int main() { FILE *output; //LETTURA printf("Inserisci un testo (* per terminare l'inserimento):\n"); if((output=fopen("testo.txt","w"))==NULL) printf("Impossibile aprire il file!\n"); else letturatesto(output); fclose(output); //STAMPA if((output=fopen("testo.txt","r"))==NULL) printf("Impossibile aprire il file!\n"); else stampatesto(output); fclose(output); //CALCOLO SIMBOLI if((output=fopen("testo.txt","r"))==NULL) printf("Impossibile aprire il file!\n"); else calcolosimboli(output); fclose(output); system("pause"); return 0; } void letturatesto(FILE *output){ char c; c=getchar(); while(c!='*'){ fputc(c,output); c=getchar(); } } void stampatesto(FILE *output){ char c; int i=0; printf("-----------------------\n"); printf("Stampa contenuto file:\n"); c=fgetc(output); while(c!=EOF){ printf("%c",c); c=fgetc(output); i++; } printf("\nNel file ci sono %d caratteri;\n",i); printf("-----------------------\n"); } void calcolosimboli(FILE *output){ char c; int i=0; printf("-----------------------\n"); printf("Occorrenze caratteri non alfanumerici:\n"); c=fgetc(output); while(c!=EOF){ if(c!='a'||c!='b'||c!='c'||c!='d'||c!='e'||c!='f'||c!='g'||c!='h'||c!='i'||c!='j'||c!='k'|| c!='l'||c!='m'||c!='n'||c!='o'||c!='p'||c!='q'||c!='r'||c!='s'||c!='t'||c!='u'||c!='v'||c!='w'||c!='x'||c!='y'||c!='z' ||c!='0'||c!='1'||c!='2'||c!='3'||c!='4'||c!='5'||c!='6'||c!='7'||c!='8'||c!='9'){ i++; } c=fgetc(output); } printf("\nNel file ci sono %d caratteri non alfanumerici;\n",i); printf("-----------------------\n"); }

Rispondi quotando
in questo caso la funzione di libreria di riferimento diventa
