例如,我需要以每次插入都是 100 個位置的塊的方式在二進制檔案中插入資料。因為我知道它從哪里開始,所以我可以輕松地使用 fseek/seekg 來訪問元素 0 * 100、1 * 100、2 * 100、... n * 100。那么我如何保證每次插入都在位置 k * 結束100?
或者,我是否可以將暫存器添加到檔案中,以便我可以像訪問陣列一樣遍歷它們?
uj5u.com熱心網友回復:
檔案系統通常不被撰寫為允許任意插入。至少您需要在您希望寫入的位置之后讀取檔案內容,寫入您的插入,然后寫回保存的資料。更典型的是,您創建一個新的臨時檔案,寫入前面的內容,新內容,然后是后面的內容,只有在新檔案完全寫入后,洗掉舊檔案并將新檔案重命名為原始檔案的名稱。這樣做是為了確保檔案始終具有有效內容,即使您的程式或什至計算機本身在操作程序中出現問題也是如此。
某些檔案系統確實能夠寫入非常特定的插入,但只能插入大于 100 位元組的大小。當此能力存在時,它將僅在 2 大小和偏移量的某些冪中起作用。
uj5u.com熱心網友回復:
回圈變數i不是您要寫入的值。您想要改為寫入值i。
for(int i=0;i<10;i )
{
fwrite(&i,sizeof(i),1,fp);
}
應該
for(int i=0;i<10;i )
{
fwrite(&i,sizeof(int),1,fp);
}
在您的代碼中,您正在寫入回圈變數的值,該值始終是0(只寫入一個位元組)。您可能想改為寫入該值i。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/536329.html
標籤:C文件文件IO二进制文件
上一篇:如何獲取檔案中字串后的實數
下一篇:在C中建立統計程序的問題
