我創建了一個4000塊的文件,塊大小爲4096字節。 現在我想操作單個塊並再次讀取它們而不更改文件的大小。 其實我想寫出另一個文件的塊到我創建的文件中的特定塊。 因此我打開文件中binarymode這樣的:C以二進制模式讀取/寫入文件
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);
...
}
出於某種原因,我改變之前創建的文件它的大小,變成了我想寫入的文件的副本。
我在做什麼錯?
預先感謝您!
一個滑稽的錯誤。用於讀取的'r',用於寫入的'w'(讀取*覆蓋*)和用於追加的'a'。 –
謝謝你的回答我試試這個。 – SevenOfNine