PDA

Visualizza la versione completa : [C] Rappresentazione di file binari


mawjuve
18-09-2009, 12:53
Ciao a tutti. Non riesco a capire questi file binari. Da quanto ho capito,ci posso scrivere qualsiasi cosa , e in seguito dovrei leggerci solo numeri.
Invece quando lo apro ci sono lettere!


fp=fopen("Voti.bin","wb");
for(i=0;i<10;i++)
fprintf(fp,"Matricola %d => interr %d :voti %d \n",voti[i][0],(voti[i][1]-1),(voti[i][2]-6));

fclose(fp);

Questa Ŕ la parte di programma in cui apro il file binario e scrivo.
Sbaglio qualcosa?
Grazie per qualsiasi consiglio! :mame:

LeleFT
18-09-2009, 13:03
Originariamente inviato da mawjuve
Ciao a tutti. Non riesco a capire questi file binari. Da quanto ho capito,ci posso scrivere qualsiasi cosa , e in seguito dovrei leggerci solo numeri.

E dove avresti letto questa assurditÓ?



Invece quando lo apro ci sono lettere!


fp=fopen("Voti.bin","wb");
for(i=0;i<10;i++)
fprintf(fp,"Matricola %d => interr %d :voti %d \n",voti[i][0],(voti[i][1]-1),(voti[i][2]-6));

fclose(fp);

Questa Ŕ la parte di programma in cui apro il file binario e scrivo.
Sbaglio qualcosa?
Grazie per qualsiasi consiglio! :mame:

Cosa vuol dire "quando lo apro"? Lo apri con un editor di testi (come Blocco Note)? O con un tuo programma (di cui non si vede il codice)?

Supponendo che tu lo apra con il Blocco Note...

Non so cosa contenga la matrice "voti", immagino dei numeri... se Ŕ cosý, Ŕ molto facile che aprendo il file tu veda delle lettere... ad esempio, se hai il valore 65, probabilmente vedrai una "A", se hai il valore 163 vedrai una "˙"...

Aprire un file in modalitÓ binaria significa non fare alcuna assunzione sul contenuto del file, ma andarlo ad indirizzare direttamente byte per byte...


Ciao. :ciauz:

mawjuve
18-09-2009, 13:30
Grazie. Si l'ho aperto con blocco note. Ora ho appena letto che per i file binari si usa la fwrite.
Ma come faccio a scrivere la matrice con la fwrite?
Per provarla ho corretto cosý il programma scrivendo :


fp=fopen("Voti.bin","wb");
for(i=0;i<10;i++)
fwrite(voti,1,i,fp); // QUI !!

Cmq l'ho aperta con wordpad e mi Ŕ apparso:


■■■

Altrimenti in che modo posso aprire il file per verificare se Ŕ giusto l' esercizio?
Scusa sono alle prime armi...
Grazie per l'aiuto!!

LeleFT
18-09-2009, 15:02
Non Ŕ un problema di funzione da usare, il problema Ŕ capire cosa stai cercando di scrivere.
Se scrivi un numero, nel file ci andrÓ la rappresentazione binaria del numero (cosý com'Ŕ in memoria)... e se apri il file con il Blocco Note, quello che vedi Ŕ un'accozzaglia di caratteri, in base al numero.

Se tu vuoi scrivere su un file di testo (Blocco Note apre solo file di testo), devi trasformare il numero in stringa e scrivere quella.

Vedi le funzioni di conversione da numero a stringa (esempio, itoa() ).


Ciao. :ciauz:

mawjuve
18-09-2009, 23:19
Ti ringrazio....ora ho tutto + chiaro!! :ciauz:

Loading