Oppure

Loading
21/11/11 20:37
drewnik99
Per leggere un file binario fino alla fine, uso il seguente ciclo:

while(ch = getc(fr) && (feof(fr)) && ungetc(ch, fr))
{
//leggi
}


Il programma termina in modo imprevito. Facendo dei controlli, ho visto che se uso solo la funzione feof(), la lettura continua oltre la fine del file, generando l'errore, ma il ciclo non funziona neanche come ho provato io. Dove sbaglio?
aaa
21/11/11 20:43
drewnik99
Trovato l'errore:

while((ch = getc(fr)) && (!feof(fr)) && ungetc(ch, fr))
{
//leggi
}
aaa
21/11/11 20:51
Il_Bomba
Se devi leggere tutto il file carattere per carattere non puoi fare così?

for(c=fgetc(filedaleggere);c!=EOF;c=fgetc(filedaleggere)){
//altre istruzioni
}


oppure

c=fgetc(filedaleggere);
while(c!=EOF){
c=fgetc(filedaleggere);
}


Può andare?
aaa
22/11/11 9:23
nessuno
Attenzione ... se si accede ai file in binario, non esiste EOF ...

In quel caso tutti i byte sono uguali e il file finisce quando si legge l'ultimo (determinato dalla lunghezza in byte).



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.