2015-05-25 23 views
0

我正在用C語言編寫一個小程序,我希望可以選擇將數據保存到文件,然後從該文件讀取數據。數據很大,所以我想以某種方式動態寫入文件,而不必創建新文件並將修改後的舊文件複製到文件中。C - 動態修改文件 - 有可能嗎?

這就是我想要做的: 在第一行中,我想以「%s%s%s ...%s \ n」的形式對數據進行「描述」,其中%s是一個字符串和第n個字符串描述第n + 1行的數據。我想讀取文件的第1行,掃描相應的「描述」字符串,如果不存在,則將其附加到第一行,並在文件的最後一行後面添加與其對應的數據。

問題是 - 是否有可能跳到文件中的行而沒有掃描所有以前的行,並且我可以以某種方式讀取文件的第一行並在讀取後追加一些內容?或者,也許這不是在這種情況下去的方式,C提供了某種不同的解決方案?

+1

你不能只使用現有的數據庫嗎?也許SQLite?如果不是,那麼您可以跳到文件中的任何位置,只讀取對您而言重要的內容,但您需要事先知道確切的位置以及您將讀取多少數據。你是怎樣做的?爲每一行(或塊,無論你稱之爲什麼)建立固定大小,並使用簡單的乘法。但是,不要指望能夠在不重寫所有下一行的情況下插入「第二行」。 – jweyrich

+1

請勿使用文本文件,使用固定格式的二進制文件。 –

+1

調查[尋找和閱讀大文件](http://stackoverflow.com/questions/1035657/)。那裏的答案也適用於C. –

回答

2

想要什麼可以使用stdiofseek()來完成。只要你知道你想要的字節偏移量,你可以覆蓋和/或追加文件中的任何位置,而無需讀取之前的數據或覆蓋的數據。你不能輕易做的就是插入數據,即打開文件,將它分成兩部分,然後放入數據。

不太確定這是不是你的意思,雖然...