ブロックサイズが 4096 バイトの 4000 ブロックのファイルを作成しました。ここで、単一のブロックを操作し、ファイルのサイズを変更せずにそれらを再度読み取りたいと考えています。実際には、作成したファイル内の特定のブロックに別のファイルからブロックを書きたいと思っています。したがって、次のようにファイルをバイナリモードで開いています。
FILE * storeFile=fopen(targetFile, "wb"); // this one I created before
FILE * sourceFILE=fopen(sourceFile,"rb");
今、私はポインタへのものを読み込もうとしています
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);
...
}
何らかの理由で、以前に作成したファイルのサイズが変更され、書き込みたいファイルのコピーになります。
私は何を間違っていますか?
前もって感謝します!