Problema con un programma in c

di il
16 risposte

Problema con un programma in c

Salve dovrei eseguire un programma che letti numeri da file mi dovrebbe restituire il più grande.
Ovviamente il programma non esegue correttamente e noncapisco cosa ho sbagliato.
int main(int argc, char** argv) {
    FILE *fp;
    int max,num;
    fp=fopen("testi.txt","r");
   
    while(!feof(fp)){
        fscanf(fp,"%d",&num);
       
        if(num>max){
            max=num;
        }
    }
     printf ("L elemento maggiore e %d",max);
    fclose(fp);
   
        
    

    return (EXIT_SUCCESS);
}
Qualcuno mi potrebbe aiutare?

16 Risposte

  • Re: Problema con un programma in c

    Hai inizializzato max all'inizio del programma?
  • Re: Problema con un programma in c

    Sisi l ho inizializzato max
  • Re: Problema con un programma in c

    Dove?
  • Re: Problema con un programma in c

    Esattamente che problema ti da?

    Comunque credo che _Achille abbia ragione.... .
  • Re: Problema con un programma in c

    L ho inizializzato cosi
    int main(int argc, char** argv) {
        FILE *fp;
        int max=0,num;
        fp=fopen("testi.txt","r");
       
        while(!feof(fp)){
            fscanf(fp,"%d",&num);
           
            if(num>max){
                max=num;
            }
        }
         printf ("L elemento maggiore e %d",max);
        fclose(fp);
       
            
        
    
        return (EXIT_SUCCESS);
    }
    il programma quando lo compilo non mi da errori pero quando lo eseguo non fa niente.
  • Re: Problema con un programma in c

    Ciao,
    ho provato il codice sulla mia macchina e funziona. Probabilmente il tuo problema è che non trova il file di testo, assicurati che sia nella stessa cartella dell'eseguibile.
  • Re: Problema con un programma in c

    Siii è vero il file l avevo inserito da un altra parte.
    Grazie mille
  • Re: Problema con un programma in c

    A parte il fatto che il file era da un'altra parte, max nel codice iniziale NON era inizializzato.
  • Re: Problema con un programma in c

    L avevo inizializzato solo che nel ricopiare il codice si era tolto.
    comunque sto facendo lo stesso programma pero con funzioni esterne al main, stavolta il file l ho inserito correttamente pero lo stesso quando viene eseguito non esegue nulla.
     int maxdafile(char *nomefile,int *max);
    int main(int argc, char** argv) {
        int massimo;
        maxdafile("testi.txt",&massimo);
        printf ("Il massimo e %d",massimo);
       
        
    
        return (EXIT_SUCCESS);
    }
    int maxdafile(char *nomefile,int *max){
        FILE *fp;
        int a;
        fp=fopen(nomefile,"r");
        fscanf(fp,"%d",&max);
        while(!feof(fp)){
            fscanf(fp,"%d",&a);
            if(a>*max){
                *max=a;
            }
        }
        fclose(fp);
        
    }
    
  • Re: Problema con un programma in c

    Non usi la variabile a per leggere da file e DI NUOVO non inizializzi max
  • Re: Problema con un programma in c

    Scusami qui a max gli ho dato il primo valore che si trova nel file, è scorretto?
  • Re: Problema con un programma in c

    Ok ... ma il max che leggi è GIA' un puntatore quindi non

    fscanf(fp,"%d",&max);

    ma

    fscanf(fp,"%d", max);

    Se usi una funzione che restituisce un intero, allora il max lo restituisci con il return e non come parametro con un puntatore. Decidi.
  • Re: Problema con un programma in c

    Questo è il corretto approccio. Come ti ha consigliato oregon, se specifichi come tipo di ritorno un int, ritornalo con la keyword return, altrimenti utilizza void se la tua funzione non deve produrre un risultato ma solo eseguire un'operazione.
    
    int maxdafile(char *);
    int main(int argc, char** argv) {
        int massimo;
        massimo = maxdafile("testi.txt");
        printf ("Il massimo e %d",massimo);
        return (EXIT_SUCCESS);
    }
    
    int maxdafile(char *nomefile){
        FILE *fp;
        int a;
        int max=0;
        fp=fopen(nomefile,"r");
    
        while(!feof(fp)){
            fscanf(fp,"%d",&a);
            if(a>max){
                max=a;
            }
        }
        fclose(fp);
        return max;
    }
    
    Edit: inserire il nome del parametro quando dichiari la funzione (prima riga) è inutile ai fini del funzionamento del programma (il compilatore lo ignora).
  • Re: Problema con un programma in c

    L errore stava nel metter la & davanti a max come mi aveva detto oregon.
    Come ho svolto io il programma, i parametri sono passati per riferimento? O sto dicendo una baggianata?
Devi accedere o registrarti per scrivere nel forum
16 risposte