簡體   English   中英

您如何在C中寫入txt文件的特定行?

[英]How do you write to a specific line of a txt file in C?

我想覆蓋txt文件中的某一行,同時保持所有其他行不變。 有沒有一種簡單而好的方法?

基本上使用Fseek()搜索要更改的位的順序,
然后使用Fwrite()覆蓋舊文本

OBS:您需要以rw模式打開文件以覆蓋

fopen ("myfile.txt", "wr");

使用這些參考:

http://www.cplusplus.com/reference/cstdio/fwrite/
http://www.cplusplus.com/reference/cstdio/fseek/

(它說的是C ++,但可以在C上運行)

除非您要覆蓋的行的長度具有相同的字節數,否則您不能在現有文件中“插入”或“刪除”字節。 您將必須編寫一個新文件:

  1. 讀入所有需要覆蓋的舊行,然后將它們寫入另一個輸出流(新文件指針或stdout
  2. 將新行寫出到輸出流
  3. 在您覆蓋的行之后讀取所有舊行,並將這些行寫入新的輸出流

如果要覆蓋現有字節, 並且可以確定舊行和新行的長度完全相等,則可以:

  1. rw模式下fopen()文件
  2. fseek()到舊行的字節位置(或讀入字符,直到您擊中了一些預設數量的換行符,等等—基本上,您希望將文件指針移至舊行的開頭)
  3. fwrite()新字節超過舊行的字節
  4. fclose()文件指針

如果您確實需要覆蓋同一文件中的字節,並且新行字節數少於舊行,則可以做一些技巧,用空格字符直到換行符覆蓋舊行的末尾,但是更干凈解決方案是簡單地編寫一個包含更新內容的新文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM