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");     
     
}