2013-08-17 108 views
1

我有一個文件,我正在使用cstdio中的函數寫入數據。我想確保文件已經成功寫入文件而不會有任何中斷,所以我知道當我稍後從文件中讀取文件後會期待什麼。我打算這樣做的方法是,首先將8個字節的清零數據寫入文件的最開始部分,正常寫入文件,然後作爲最後一步,倒回文件並用前8個字節覆蓋一個特定的簽名來表示文件已經完成並且格式良好。使用cstdio就地編輯文件?

我的問題是,編輯這些前8個字節的最佳方法是什麼?

隨着fopen(),什麼是適當的開放模式(第二個參數)使用?

剛開始使用rewind()並使用fwrite()是否安全?或者是否存在覆蓋行爲特有的特定功能?

+0

僅供參考:模式'「rb +」'將允許您'fopen()'讀/寫。並確保你是否立即按照帶有'fread()'的'fwrite()'來填充它們。 – WhozCraig

+0

@whozCraig這聽起來是正確的,雖然我在這種情況下創建文件。 「wb +」會同樣工作嗎? –

+1

是的,那應該沒問題。它會截斷該文件,如果它存在。如果這是意圖,它應該爲你工作。 – WhozCraig

回答

1

WhozCraig是對的。使用wb+是完全好的,以及rewind是。

您還可以看看文件鎖定,從而確保:

  • 沒有一個人可以讀/寫文件,而你持有獨佔鎖
  • ,而你是任何人都不能寫入文件持有共享鎖