Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C] Piccolo problema lettura file

    Salve, rieccomi con un nuovo stupido problema col C .__.
    Devo leggere una serie di numeri da un file di testo, e il problema è che l'ultimo numero viene stampato 2 volte...
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int a;
        FILE *f = fopen ("list.txt", "r");
        
        while (!feof (f))
        {
              fscanf (f, "%d", &a);
              printf ("%d\n", a);
        }
        
        fclose (f);
        
        system ("pause");
        
        return 0;
    }
    Cosa sbaglio?

  2. #2
    Prova così :
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int a;
        FILE *f = fopen ("list.txt", "r");
        
        fscanf (f, "%d", &a);
        while (!feof (f))
        {
              printf ("%d\n", a);
              fscanf (f, "%d", &a);
        }
        
        fclose (f);
        
        system ("pause");
        
        return 0;
    }
    Experience is what you get when you don’t get what you want

  3. #3
    grazie mille funziona

  4. #4
    Hai capito il problema ?
    Experience is what you get when you don’t get what you want

  5. #5
    scusate anche se non c'èentro.. ihih però visto che sto cercando di conoscere c e c++.. perchè come consiglio gli hai aggiunto

    fscanf (f, "%d", &a);

    fuori dal ciclo while?? così cosa cambia??

  6. #6
    Non ho solo aggiunto una lettura.

    Prima:
    codice:
        while (!feof (f))
        {
              fscanf (f, "%d", &a);
              printf ("%d\n", a);
        }
    Dopo:
    codice:
        fscanf (f, "%d", &a);
        while (!feof (f))
        {
              printf ("%d\n", a);
              fscanf (f, "%d", &a);
        }
    Nel reference dice:
    int feof ( FILE * stream );
    <cstdio>
    Check End-of-File indicator
    Checks whether the End-of-File indicator associated with stream is set, returning a value different from zero if it is.
    This indicator is generally set by a previous operation on the stream that reached the End-of-File.
    [...]
    Quindi la feof controlla se il flag di eof è settato.
    Questo accade solo se viene fatta un'operazione (come la lettura) sullo stream.

    In pratica io mi sono limitato a spostare il controllo, posizionandolo dopo la lettura (da file) e prima della stampa (a video).

    Sono stato chiaro ?
    Experience is what you get when you don’t get what you want

  7. #7
    ok grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.