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.
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.*/
#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");
}