小编Sev*_*ine的帖子

C 以二进制模式读/写文件

我创建了一个包含 4000 个块的文件,块大小为 4096 字节。现在我想操作单个块并再次读取它们而不更改文件的大小。实际上我想将另一个文件中的块写入我创建的文件中的特定块。因此,我以二进制模式打开文件,如下所示:

FILE * storeFile=fopen(targetFile, "wb");  // this one I created before
FILE * sourceFILE=fopen(sourceFile,"rb");
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试将内容读取到指针

char * ptr=malloc(4096);
...
for(i=0; i<blocks_needed; i++)
{
    fread(ptr,4096,1,sourceFile);
    // now I am going to the position of the blocks I want to write to
    fseek(storeFile,freeBlocks[i]*4096,SEEK_SET);
    // and now I am writing it to the File I created before
    fwrite(ptr,4096,1,storeFile);
...
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我之前创建的文件改变了它的大小,并成为我想要写入其中的文件的副本。

我究竟做错了什么?

先感谢您!

c fopen fseek fwrite fread

2
推荐指数
1
解决办法
4万
查看次数

标签 统计

c ×1

fopen ×1

fread ×1

fseek ×1

fwrite ×1