ESERCIZIO FILE LING. C

di il
7 risposte

ESERCIZIO FILE LING. C

Chiedo un aiuto per i punti 2 e 3 di questo esercizio.

Scrivere un programma in C che effettui i seguenti compiti:
1)Legga 20 interi dalla tastiera e li salva in una lista L1, calcolando minimo, massimo e media (RISOLTO).
2)Chieda all'utente di inserire un intero n da tastiera e salvi in un file "numbers.txt" tutti i numeri minori di n.
3)Legga il file "numbers.txt" in una lista L2, calcolando su di essa mostrando a video minimo, massimo e media.

P.S.: il problema mi sorge quando devo affrontare la parte legata ai file, qualcuno può aiutarmi fornendomi qualche spiegazione e qualche suggerimento su come devo muovermi? Vi ringrazio anticipatamente.

7 Risposte

  • Re: ESERCIZIO FILE LING. C

    Parti dal punto 2) ... spiega cosa non sai fare (non sai aprire il file? non sai scrivere dentro?) ...
  • Re: ESERCIZIO FILE LING. C

    Una volta inserito n, come faccio a salvare i numeri minori di n della lista all'interno di un file?
    Apro un file, lo abilito in scrittura(suppongo), e poi scorro la lista ed ogni volta che trovo un numero inferiore ad n, richiamo la funzione di scrittura?
  • Re: ESERCIZIO FILE LING. C

    Sì ... prova a scrivere il codice di quello che hai appena detto ...
  • Re: ESERCIZIO FILE LING. C

    
        void scrivi_su_file(char *nomefile,t_list lista){
    
        int n;
        printf("Inserisci un numero: ");
        scanf("%d",&n);
        t_list curr;
        curr=lista;
        FILE *pf;
        pf= fopen(nomefile, "w");
        if(pf){
        while(curr!=NULL){
        if(curr->info < n){
    
        fprintf(pf, "%d\n",curr->info);
        curr=curr->link;
    }   else {
        curr=curr->link;
    }
    }   fclose(pf);
    }   else  {
        printf("Errore");
    } 
    }
    Ok ci sono riuscito e funziona, per il 3 punto invece sapresti darmi una dritta?
  • Re: ESERCIZIO FILE LING. C

    Sai leggere i dati da un file? Apri in lettura e leggi valore dopo valore costruendo la lista come nel punto 1
  • Re: ESERCIZIO FILE LING. C

    void leggi_file(char *nomefile){
    
        FILE *pf;
        t_list L2;
        int *info;
        
        L2=crea_lista();
        pf=fopen(nomefile, "r");
    
        if(pf){
        
        
        fscanf(pf, "%d", info);
    
        L2=inserisci_info(L2,*info);
        fclose(pf);
    }   else  { 
        printf("Errore");
    }
        stampa_lista(L2);
    }

    Come faccio a scorrere i dati del file? Così mi stampa solo il primo nella lista
  • Re: ESERCIZIO FILE LING. C

    Devi usare un ciclo al cui interno inserisci la fscanf.

    E devi controllare il valore restituito da fscanf ... se è >0 ripeti il ciclo.


    P.S. Hai usato un modo sbagliato di leggere il dato, anche se sembra funzionare. Devi scrivere
    int info;

    e

    fscanf(pf, "%d", &info);


    P.P.S. Non sollecitare soluzioni in privato, rispondo solo sul forum, quando posso.
Devi accedere o registrarti per scrivere nel forum
7 risposte