Utilizzo dei file binari

di il
6 risposte

Utilizzo dei file binari

Buon pomeriggio gentili utenti del forum.
Ho imparato ad usare i file in formato binario (usando stdio.h ),
provando a modificare file binari creati da me, non ho trovato nessun problema, sotto questo punto di vista riesco a usare l' I/O su file binari senza problemi.
Ecco la domanda: se tutti i file alla fine non sono altro che informazioni scritte col codice binario (perchè è così vero?) allora potrei grazie al C modificare, o nel mio caso, copiare, qualsiasi tipo di file, così ho provato ad usare il programma su un file di estensione PNG, ma purtroppo non ha funzionato.
#include <stdio.h>
int main(){
FILE *a=NULL, *b=NULL;
int controllo;
char c;
a=fopen("prova.png","r");
b=fopen("output.png","w");
while(1){
    controllo=fread(&c,sizeof(char),1,a);
    if(!controllo) break;
    fwrite(&c,sizeof(char),1,b);
}
fclose(a);
fclose(b);
}
Teoricamente il mio codice dovrebbe essere giusto, è la sua funzione dovrebbe essere quella di produrre una copia esatta del file, ma invece così non è, e non ne capisco il motivo, il file uotput non assomiglia al fatto al file prova, sembra come se il programma non riesca a prendere tutti i byte del file prova, qualcuno potrebbe gentilmente darmi delle spiegazioni al riguardo?
grazie in anticipo

6 Risposte

  • Re: Utilizzo dei file binari

    Se tratti dei file in binario devi usare la modalità

    rb

    wb

    per l'apertura.
  • Re: Utilizzo dei file binari

    Senza parole, funziona perfettamente...
    mi scuso per la mia ignoranza, te ne sarò eternamente grato, da solo non ce l'avrei mai fatta
  • Re: Utilizzo dei file binari

    Azathoth ha scritto:


    da solo non ce l'avrei mai fatta
    No ... non è vero ... avresti potuto leggere (anche velocemente) la documentazione

    http://www.cplusplus.com/reference/cstdio/fopen

    prima di usare la fopen ...
  • Re: Utilizzo dei file binari

    Dato che il "modo" binario è only windows sarebbe piu consono leggere l'msdn fopen anche se adesso mi nasce un dubbio??????
    ma la fopen passa sempre attraverso le api di windows giusto? quindi qualsiasi compilatore io usi il risultato è il medesimo?
    oppure l'implementazione della fopen del gcc potrebbe risultare diversa di quella del CL?
  • Re: Utilizzo dei file binari

    "Although on some environments no conversions occur and both text files and binary files are treated the same way, using the appropriate mode improves portability."
  • Re: Utilizzo dei file binari

    Si si ok,cmq mi son già tolto il dente avevo preso un'abbaglio momentaneo.Meglio il tuo link che è piu "standard"
Devi accedere o registrarti per scrivere nel forum
6 risposte