Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con fwrite() e fread()
Forum - C/C++ - Problema con fwrite() e fread()

Avatar
gcali (Normal User)
Newbie


Messaggi: 12
Iscritto: 23/03/2014

Segnala al moderatore
Postato alle 17:15
Giovedì, 08/05/2014
Come da titolo, ho un problema con l'output, e in particolare quello numerico, su files testuali ad accesso casuale.

Utilizzando
Codice sorgente - presumibilmente Plain Text

  1. fwrite(&var, sizeof(int), 1, filePtr)

, dove var è un int con valore 1 ottengo un output non leggibile su filePtr. Aprendo il file con un editor esadecimale, ho notato che effettivamente è stato scritto un byte con valore 1 e altri 3 con valore 0, ovvero 4 byte, la dimensione di un int sul mio sistema. Il problema è che leggendo il file con
Codice sorgente - presumibilmente Plain Text

  1. fread(&var, sizeof(int), 1, filePtr)

non ottengo 1, bensì un risultato indefinito, credo dovuto al fatto che fread incontra gli altri 3 byte con valore 0 e gli attribuisce un valore indefinito (134514107).

Con i char non ho problemi di lettura, sia con fread() dal mio programma che aprendo semplicemente il file.txt, immagino perché dovendo leggere un solo byte fread non incontra valori nulli e l'editor di testo si aspetta normalmente di dovere visualizzare un byte alla volta (probabilmente il motivo per il quale i 4 byte scritti con fwrite non sono leggibili all'interno di questo).

Avevo pensato di convertire in char la variabile prima di scriverla, esiste una soluzione migliore per rendere il file leggibile e l'input corretto?

PM Quote
Avatar
gcali (Normal User)
Newbie


Messaggi: 12
Iscritto: 23/03/2014

Segnala al moderatore
Postato alle 17:46
Giovedì, 08/05/2014
EDIT: ho risolto il problema di lettura con fread(), avevo aperto il file in modalità "w+" e non "wb+" :_doubt:

PM Quote