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