Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C] Lettura da file

  1. #1

    [C] Lettura da file

    Ho da poco iniziato a programmare in c ed ho scelto come comilatore Dev c
    Avevo intenzione di leggere da file una serie di numeri ed ho scritto il seguente programma:
    Codice PHP:
    #include<stdio.h>
    #include<stdlib.h>
    //programma che legge da file

    int main (){
        
    int a=0;
        
    FILE *fd;
        
    fd=fopen("prova.txt","r");
        if(!
    fdprintf ("File non aperto. Il programma non puo' proseguire\n");
        else{
             while(!
    EOF){
                         
    fscanf(fd,"%i",&a);
                         
    printf("%i \n",a);
                         }
                         }
        
    system ("pause");
        return 
    0;

    il file che è presenente nella stessa cartella prova.txt e formato da tutti numeri uno sotto l'altro però quando lancio il programma non mi comparono i numeri inseriti nel file dove sbaglio???
    LMWEB.it - Il portale tecnologico
    http://www.lmweb.it - http://www.lmweb.it/blog

  2. #2

    Re: [C] Lettura da file

    !EOF è sempre falso quindi non entra neppure una volta nel corpo del while.

  3. #3
    ma se tolgo il punto esclamativo non si ferma mai mi mostra sempre l'ultimo elemento
    LMWEB.it - Il portale tecnologico
    http://www.lmweb.it - http://www.lmweb.it/blog

  4. #4
    Originariamente inviato da lmweb.it
    ma se tolgo il punto esclamativo non si ferma mai mi mostra sempre l'ultimo elemento
    Sicuro che sia sempre l'ultimo elemento?

    Hai letto la documentazione sul valore restituito dalla "fscanf"?
    ;-)

  5. #5
    io non riesco a capire come mai si sono sicuro mi restituisce sempre l'ultimo elemento. Non esce mai dal while
    LMWEB.it - Il portale tecnologico
    http://www.lmweb.it - http://www.lmweb.it/blog

  6. #6
    Per verificare se sei giunto alla fine del file usa feof(fd); EOF è una macro che non c'entra.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Attenzione....EOF è una costante, se scrivi
    codice:
    while(EOF)
    non uscirà mai dal ciclo e se scrivi
    codice:
    while(!EOF)
    non ci entra mai.

    Prova a guardarti questa funzione.

  8. #8
    Originariamente inviato da lmweb.it
    io non riesco a capire come mai si sono sicuro mi restituisce sempre l'ultimo elemento. Non esce mai dal while
    A me il tuo programmino (sostituendo !EOF con EOF) con il seguente file:

    "prova.txt"
    codice:
    5 4 3 2 1
    produce:
    codice:
    $ ./a.out
    5 
    4 
    3 
    2 
    1 
    1 
    1 
    1 
    1
    quindi continua ad infinitum a scrivere 1. Forse tu non riesci a leggere le prime righe del tuo output.

    In ogni modo, puoi capire se si è giunti a fine file, controllando il valore restituito dalla fscanf, od utilizzando la feof.

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.