繁体   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