gpt4 book ai didi

c - 用 C 读取文件时遇到问题

转载 作者:行者123 更新时间:2023-11-30 18:43:05 25 4
gpt4 key购买 nike

我正在尝试解决一个问题,该问题需要我读取一个文件并生成另一个文件,该文件的内容与原始文件相同,但每四个字节被删除。我尝试这样做...

int main()
{
FILE *p;
FILE *q;
int i=0,k=0;
char c;

p = fopen("C:\\Users\\Teja\\Desktop\\Beethoven.raw","rw");
q = fopen("C:\\Users\\Teja\\Desktop\\Beethoven_new.raw","w+");

printf("%x is the EOF character \n",EOF);
while((c=fgetc(p))!=EOF)
{

if(i==3){
i=0;
printf("Removing %x %d \n",c,k++);
}
else{
printf("Putting %x %d \n",c,k++);
fputc(c,q);
i++;
}
}
fclose(p);
fclose(q);

return 0;
}

我尝试读取的文件是 .raw 文件,大小约为 10-15 MB。我注意到上面的代码通常在 88 个字节后停止读取文件。有什么方法可以读取大文件还是我做错了什么?

最佳答案

除了已经指出的内容之外,关于打开文件的注意事项:这听起来像是二进制文件中的文件,这意味着您必须在模式字符串中添加 b 。此外,rw 不是一种模式,因为您只从 p 读取您想要的 rb,并且因为您只写入 q 您需要 wbwb+

顺便说一句,之所以需要 fgetc 返回 int 是因为 fgetc 必须返回 257 个唯一值:char< 的所有可能值,即 0x000xFF 以及表示 EOF 的独特内容,通常为 -1

关于c - 用 C 读取文件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12771091/

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