Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti,
sono nuovo del Forum e contento di farne parte.
Avrei un problema, ho quasi finito di studiare il C come autodidatta, basandomi sul fantastico libro di Paul & Harvey Deitel, il problema è che mi sono bloccato sul fwrite e fread non riuscendo a capire come si usano ma sopratutto a che servono.
Ho fatto una ricerca approfondita grazie al mio amico google ma non sono riuscito a trovare un tutorial sull'argomento...
Premetto che conosco l' fopen e fclose ma sti due mi mancano.
Qualcuno potrebbe fare un piccolo tutorial in modo che io possa capirlo ? Possibilmente con parole semplici.
Grazie mille in anticipo.
E' semplicissimo.. fwrite serve per scrivere su di un file binario, ovvero non .txt, ed fread per leggervi. Il prototipo di fwrite è size_t fwrite(void *pt, size_t size, size_t blocks, FILE *fp), dove pt è il puntatore all'area di memoria dove si trova ciò che devi scrivere(stringa, array...), size è la dimensione di ciò che devi scrivere, e fp ovviamente il puntatore al file sul quale scrivere. blocks è il numero di blocchi da scrivere, in genere di lascia a 1. fwrite ritorna il numero di bytes scritti.
Per fread il prototipo è identico, soltanto che pt non indica ciò che devi scrivere sul file ma ciò che devi leggervi. Anch'esso ritorna il numero di bytes letti.
Spero di esserti stato utile...
Ultima modifica effettuata da web_pirate il 25/07/2012 alle 2:01
Una precisazione ... le due funzioni operano in *modalità binaria* su *qualsiasi* file (quindi i .txt non sono esclusi).
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à.
Un pochino complicata questa parte di C devo dire.
In realtà è tra le più semplici ...
Testo quotato
E come faccio a sapere qual'è la dimensione giusta ?
La dimensione del buffer la conosci tu perché il buffer lo prepari tu in precedenza (e quindi conosci bene la sua dimensione in byte).
Testo quotato
Dovrei consultare il codice Ascii ?
E cosa c'entra il codice Ascii? Sei un po' confuso ...
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à.
Concordo con nessuno... XD Intendo che concordo con l'utente nessuno. XD Comunque... La dimensione, come ti dicevano, la conosci in partenza: se per esempio devi scrivere sul file la stringa "pippo", il parametro size sarà sizeof(pippo). La stessa cosa per la lettura... In genere se vai a leggere qualcosa su un file, dovresti conoscere la struttura di questo file, altrimenti non sapresti cosa e dove leggere, ma se anche così non fosse, potresti leggere uno alla volta tutti i caratteri, nel qual caso il parametro size sarebbe un semplice sizeof(char[correggetemi se sbaglio XD]).
Raga dovete perdonarmi ma ancora non riesco a comprenderlo e giuro che le sto provando tutte.
Sto facendo così, assimilo informazioni dal mio libro e ritorno a leggere quello che avete scritto, poi vado su internet, ma è tutto in inglese. Rivado sul libro, rileggo e poi ritorno qui a leggere quello che avete scritto, ma non mi entra nel cervello.
E come se leggessi il cinese. Mi sento un'idiota.
Raga forse sono io che vedo la cosa troppo complicata, invece è semplice semplice ? Secondo me il fwrite serve solo a trasformare le parole in bit e scriverle dentro un documento e basta. E l'Fread serve solo per trasformare i bit del documento in parole.Correggetemi se sbaglio.
Ultima modifica effettuata da Ragnarok il 27/07/2012 alle 1:30
Ciao devi tenere presente che con fwrite e fread , puoi scrivere e leggere ,qualunque tipo di dato su un file binario , che siano int , float , array di char , o strutture .
se trovi esempi con array di char , non pensare che riguardi solo le stringhe
gli esempi sulle stringhe possono confondere le idee
fwrite (buffer , 1 , sizeof(buffer) , pFile );
significa , indirizzo di buffer che essendo un array il nome è già l' indirizzo
dimensione byte 1 , 1 byte è la dimensione di un carattere
sizeof(buffer) numero byte dell'array -->1 byte = 1 carattere -->num caratteri
numero blocchi da scrivere
PER EVITARE CONFUSIONE scrivi allo stesso modo anche per le stringhe
fwrite (buffer ,sizeof(buffer) , 1 , pFile );
è equivalente e non ti confoni
Ultima modifica effettuata da torn24 il 27/07/2012 alle 16:33
Allora, detto semplicemente, il primo parametro indica COSA vuoi scrivere, il secondo QUANTO è grande quello che vuoi scrivere, l'ultimo è DOVE lo vuoi scrivere.