2013-05-07 51 views
0

我想在現有的文件上寫入一些數據。它是一個包含大約8-10行標題(#註釋),然後是數千行data values的文件。我想要的是保持標題相同,但將更新後的data values添加到文件中。在更新之後,我很少有data values的行數。如何寫入文件中的特定行?

所以基本上我想在標題中最後#評論後刪除所有內容,然後從那裏開始寫起的新值。那可能嗎?

下面是一個例子:

原始文件

#Program 
#Date 
#Hello 
0 23 23 54 
1 12 4 2 
2 253 786 9887 
3 3 23 54 
4 1 4 4 
5 23 6 81 

更新的文件

#Program 
#Date 
#Hello 
0 2 23 54 
2 253 786 9887 
5 23 6 81 

我正在編輯使用fopen讀取文件和fprintf寫它的代碼。我寧願如果答案是沿着這些線路,所以我不必改變這兩個。

+1

爲什麼你使用'fopen'只是一定寫回到它之前關閉它?在C++中,你應該使用'std :: fstream'。 – mwerschy 2013-05-07 16:02:27

+0

我正在使用的軟件使用fopen。 – detraveller 2013-05-07 16:06:38

+0

好吧...只要'getline'會更容易;) – mwerschy 2013-05-07 16:07:54

回答

6

我想出的最簡單的方法是打開Original File,讀取標題並將其複製到內存中,如string header。然後通過寫header覆蓋整個文件,然後將新的數據

+0

您是否打算覆蓋現有文件?因爲這不是最好的想法,至少如果你在寫作過程中出現問題時擔心數據損壞。 – jrok 2013-05-07 17:02:46

+0

@jrok我沒有*建議*,OP。作爲OP的問題中的第一句話:「我想在已經存在的文件上寫入一些數據。」 – GuLearn 2013-05-07 17:13:02

+0

@jrok如果我不完全重寫/覆蓋,那麼有什麼替代? – detraveller 2013-05-07 18:20:53

2

編寫一個函數,從文件中讀取頭,並將它們存儲到一個類/變量/結構。

編寫寫頭的文件

寫寫入所需的值到文件

執行所有三個功能的順序如下功能的功能。這是您覆蓋是無關緊要的同一個文件的事實,

相關問題