Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
il problema è che mi legge solo file di testo (come txt, cpp, h, anche il makefile) ma se provo ad aprire (come nel codice sopra) un mp3 on un qualunque alto file (come bmp,wma,jpeg ecc.) mi legge solo i primi 3 o 4 caratteri;
come posso fare a leggere tutto il file;
una volta letto tutto dovrei codificare la stinga letta e riscrivere il file con un'altra estensione, ma questo lo so fare, il probleme è leggere;
allora, i file binari, a differenza dei file di testo, possono contenere qualsiasi tipo di byte al loro interno, anche il byte '\0', ovvero il terminatore delle stringhe.
la read legge corretamente il contenuto ma poi quando vai a mostrarlo la printf si interrompe ad ogni '\0' facendo sembrare che il file sia "troncato"
quello che devi fare se vuoi mostrare a video un file binario (per quanto questo possa essere utile), è ciclare stampando "a mano" i char del buffer fino ad incontrare il numero di caratteri letti, ottenuti con la funzione gcount().
non ci avevo pensato,
però mi rimane ancora un dubbio,
se scrivo la variabile text con write() dovrebbe comunque scrivere indipendentemente dal '\0', o mi sbaglio??