gpt4 book ai didi

c++ - 读取和复制中间带有 EOF 指示符的文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:56 25 4
gpt4 key购买 nike

我使用下面的代码从一个二进制文件复制到另一个二进制文件,但第一个文件包含一些 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;
}

谢谢,宾雅明

最佳答案

fgetc 返回一个 int,而不是一个 char,因此您可以区分 EOF 和与 EOF 具有相同值的 char。

改变:

char ch;

int ch

并且(如果您使用的是 *nix,通常不相关)

fs = fopen(infile,"r");  

fs = fopen(infile,"rb");  

关于c++ - 读取和复制中间带有 EOF 指示符的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3866075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com