【问题标题】:Deleting a string from a file从文件中删除字符串
【发布时间】:2012-11-26 01:11:44
【问题描述】:

我正在用 C 编写代码。我有以下文件 ui.txt

user1 | 127.0.1.1
user2 | 127.0.1.1
user3 | 127.0.1.1

如果我有一个字符串 str 是“user2”,我需要在 ui.txt 中找到具有 str 的行,并删除该行以便我得到

user1 | 127.0.1.1
user3 | 127.0.1.1

我打开文件是这样的:

FILE *fp;
fp = fopen("ui.txt","a+");

我用 a+ 打开它,因为任何时候我必须输入新信息,比如另一个用户和他们的 IP 地址,我都会将它附加到文件的末尾。

我该怎么做?它是否需要使用 fgetc 或 fgets?到目前为止,我一直在使用 fgets。请给我完整的代码。

附:如果有助于简化逻辑,str 也可以是“user2 | 127.0.1.1”。

【问题讨论】:

  • @Ben 基本上到目前为止,我正在使用 fgets 逐行扫描文件,将行存储在字符串中,并将其与 str 进行比较。如果不匹配,请转到下一行。但是我该如何从那里着手呢?假设我在文件的第二行找到 str .. 如何删除该行?

标签: c string file


【解决方案1】:

你基本上和这里问的一样:Delete a Line from a file in C Language,还有这里:deleting a string from a particular position in a file

您必须将文件加载到内存中,在那里对其进行编辑,然后将其写回磁盘。

【讨论】:

  • 好的.. 但是你能告诉我我应该使用什么函数来实现这个吗?我看到它的方式,我应该扫描文件直到找到 str,将 str 之前和之后的任何内容写入临时文件,然后将该临时文件的内容复制回原始文件。如何转到文件中的特定位置?
  • 你去一个特定的位置使用fseek。要将一行读入文件,请使用freadfgets
  • 好的,但是我如何获得一个职位?例如..如何到达与 str 匹配的行的第一个字符的位置?拿到后才能传给fseek吧?
  • 我不是来为你工作的。你试过买一本C书吗?还是在 Google 上搜索“C 教程”?
  • 好吧,没必要剪短:/只是我已经花了几个小时在这上面。我想我应该多花点时间。
猜你喜欢
  • 1970-01-01
  • 2018-10-18
  • 2017-04-01
  • 2014-12-19
  • 2018-11-20
  • 2015-01-11
  • 2013-08-08
  • 2022-01-16
相关资源
最近更新 更多