2015-06-12 57 views
0

我試圖打開這個文件(final.txt),並讀取其中的內容:如何用另一個文件中的數據替換文件中的數據?

 
c0001 
f260 
L 
D11 
H30 
R0000 
C0040 
1X1100000100010B300300003003 
181100202900027Part No 
181100202900097[PRTNUM] 
1e5504002400030B 
1X1100002300010L300003 
191100202000030Quantity 
191100202000080[QUANTY] 
1e5504001500040B 
1X1100001400010L300003 
1X1100001400150L003090 
191100202000170P.O.No 
191100202000220[PONUMB] 
1e5504001500180B 
191100201200030Supplier 
1e3304000700030B 
1X1100000600010L300003 
181100200300030Serial 
181100200300090[SERIAL] 
171100300900190Rev 
171100300300190[REV] 
171100300900240Units 
171100300300240[UNITS] 
1X1100000100180L003130 
Q0001 
E 

從中我只[PRTNUM][QUANTY][PONUMB][SERIAL][UNITS]閱讀。

我已經寫了下面的C程序:

char* cStart = strchr(cString, '['); 

if (cStart) 
{ 
    // open bracket found 
    *cStart++ = '\0'; // split the string at [ 
    char* cEnd = strchr(cStart, ']'); 
    // you could check here for the close bracket being found 
    // and throw an exception if not 
    *cEnd = '\0'; // terminate the keyword 
    printf("Key: %s, Value: %s",cString, cStart); 
} 
// continue the loop 

,但現在我想從第二個文件替換這些佔位符的數據:

132424235 
004342 
L1000 
DZ12 
234235 
234235

我想替換[PRTNUM](從第一個文件)與132424235等......最後,我的文件應該更新所有這些數據。你能告訴我在上面的程序中我應該使用什麼函數嗎?

回答

0

保留一個額外的字符串(命名它的副本)足夠大,以容納文件1 +一些額外的管理替換[PRTNUM]132424235

有文件1,一旦遇到 [PRTNUM]保持複製到第二個字符串(複印件),字符串2而不是複製 [PRTNUM]132424235追加,如此下去,所有其他

開始讀第一個字符串。

最後用第二個(複製)字符串替換file1.txt。

1

如果你不介意的另一種方法,這裏是一個算法做的工作在一個優雅的方式

  1. 創建一個(足夠大)臨時緩衝區。此外,創建(打開)一個輸出文件,這將是修改後的版本。
  2. 從輸入讀取文件中的一行到使用fgets()
  3. 搜索特定「關鍵詞」使用strstr()
  4. 緩衝區如果發現匹配 -

    4.1。打開另一個輸入文件。

    4.2。讀取相應的數據(行),使用fgets()

    4.3。用新讀取的值替換臨時緩衝區中的實際數據。

    4.4。將修改後的數據寫入輸出文件。

  5. 如果未找到匹配項,請將原始數據寫入輸出文件。然後,轉到步驟2.

  6. 繼續,直到fgets()返回NULL(表示文件內容已用盡)。

最後,輸出文件將包含第一個文件中的數據,並將這些特定的「佔位符」替換爲從第二個文件讀取的值。

顯然,您需要稍微改進算法以使其與多個「佔位符」字符串一起工作。

相關問題