J'ai utilisé le code ci-dessous pour copier d'un fichier binaire à un autre, mais le premier fichier contient des indicateurs EOF (0xFF), la fonction de copie copie donc le fichier jusqu'à son premier indicateur EOF.Lire et copier le fichier avec l'indicateur EOF au milieu
Par exemple: si mon fichier est {0x01, 0x02, 0x03, 0xFF, 0x01, 0x02, 0xFF, 0xFF}
, seul le code {0x01, 0x02, 0x03}
sera copié dans le nouveau fichier. Toute idée comment le résoudre (ou peut-être que je manque quelque chose ...)
code:
int Util_Copy_File(char* source, char* dest)
{
FILE *fs,*ft;
char ch;
char infile[100];
sprintf(infile, "%s", dest);
fs = fopen(infile,"r");
if(fs==NULL)
{
return -1;
}
ft = fopen(dest,"w");
if(ft==NULL)
{
fclose(fs);
return STATUS_FAIL;
}
while(1)
{
ch = getc(fs);
if(ch==EOF)
{
break;
}
else
putc(ch,ft);
}
fclose(fs);
fclose(ft);
return 0;
}
Merci, Binyamin
Vous devez ouvrir le fichier sous la forme 'binary' (" rb "). Certains systèmes d'exploitation peuvent traiter les caractères non-ASCII comme un EOF. Par exemple, Windows traite 0x1A comme EOF lors de la lecture en mode texte. –