Oppure

Loading
08/05/14 15:15
gcali
Come da titolo, ho un problema con l'output, e in particolare quello numerico, su files testuali ad accesso casuale.

Utilizzando
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
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?
aaa
08/05/14 15:46
gcali
EDIT: ho risolto il problema di lettura con fread(), avevo aperto il file in modalità "w+" e non "wb+" :_doubt:
aaa