我使用下面的代码从一个二进制文件复制到另一个,但第一个文件包含一些EOF指示符(0xFF)作为其一部分,因此复制功能实际上复制文件直到它的第一个EOF指示符.
例如:如果我的文件{0x01, 0x02, 0x03, 0xFF, 0x01, 0x02, 0xFF, 0xFF}只是{0x01, 0x02, 0x03}将被复制到新文件.任何想法如何解决它(或者我可能在那里遗漏了一些......)
码:
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;
}
Run Code Online (Sandbox Code Playgroud)
谢谢,Binyamin
nos*_*nos 13
fgetc返回一个int,而不是一个char,因此您可以区分EOF和一个与EOF值相同的char.
更改:
char ch;
Run Code Online (Sandbox Code Playgroud)
至
int ch
Run Code Online (Sandbox Code Playgroud)
并且(如果你在*nix上通常不相关)
fs = fopen(infile,"r");
Run Code Online (Sandbox Code Playgroud)
至
fs = fopen(infile,"rb");
Run Code Online (Sandbox Code Playgroud)