覆盖文本文件上的特定行?

发布于 2024-08-12 17:41:53 字数 42 浏览 11 评论 0原文

如何在 c 中覆盖文本文件上的特定行?我有多个变量的值需要写入文件中。

how do I go about overwriting a specific line on a text file in c?. I have values in multiple variables that need to be written onto the file.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南巷近海 2024-08-19 17:41:53

仅当新行与旧行大小相同时才有效:以

  • a+ 模式打开文件
  • fseek() 到文件开头
  • 在阅读下一篇之前行,使用 ftell() 记下该行的开头
  • 读取该行
  • 如果这是您想要的行,则使用 ftell() 的结果再次使用 fseek() ) 并使用 fwrite() 覆盖它。

如果行的长度发生变化,则必须复制该文件。

This only works when the new line has the same size as the old one:

  • Open the file in the mode a+
  • fseek() to the start of the file
  • Before reading the next line, use ftell() to note the start of the line
  • Read the line
  • If it's the line you want, fseek() again with the result from ftell() and use fwrite() to overwrite it.

If the length of the line changes, you must copy the file.

剩余の解释 2024-08-19 17:41:53

由于文件(从 C 标准库的角度来看)不是面向行的,而只是字符序列(或二进制模式下的字节),因此您不能指望轻松地在行级别编辑它们。

正如 Aaron 所描述的,如果您的替换字符数完全相同,您当然可以替换组成该行的字符。

您还可以(也许)通过在末尾(行终止符之前)填充空格来插入较短的替换。这当然有点粗糙。

Since files (from the point of view of C's standard library) are not line-oriented, but are just a sequence of characters (or bytes in binary mode), you can't expect to edit them at the line-level easily.

As Aaron described, you can of course replace the characters that make up the line if your replacement is the exact same character count.

You can also (perhaps) insert a shorter replacement by padding with whitespace at the end (before the line terminator). That's of course a bit crude.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文