我在重写前 2,5KB 文件时遇到了小问题。我的代码应该读取 2KB 和 512 字节来动态分配内存,然后重写更大文件的特定字节。
f = fopen(argv[2], "rb");
if(f==NULL)
printf("File doesn't exist!");
fseek(f, 0, SEEK_SET);
data = calloc(2*1024+512, 1);
fread(data, 1, 2*1024+512, f);
fclose(f);
f = fopen(argv[1], "ab");
if(f==NULL)
printf("File doesn't exist!");
fseek(f, 0, SEEK_SET);
fwrite(data, 1, 446, f);
fseek(f, 512, SEEK_SET);
fwrite(((char*)data)+512, 1, 2*1024, f);
fclose(f);
当我尝试使用wb
模式时,它会删除第二个文件的内容。当我使用ab
模式并寻找文件的开头时,以前的内容会附加在末尾。
有没有办法(使用标准 C 库)重写文件内容而不附加和复制写入文件的剩余内容?请帮忙。