c - 删除 C 中 char 数组中相同的连续行

标签 c arrays string duplicates

我正在尝试创建一个函数来检测字符数组中是否有相同的连续行。

例如,如果 char 数组包含:

Hi

Hello

Hello

Hello

Hello

然后数组将更改为

Hi

Hello

本质上,我想检测连续的、相同的行,然后删除它们,这样只保留其中一行。如果一行与前一行相同,但它们不连续,那么就可以了。

确实,整行不必相同,但至少前 79 个或 MAXCHARS 必须相同。

此外,我不想通过写入中间文件来做到这一点。理想情况下,我会将数据存储在数组中。

我在想这样的事情:

    int deleteRepeats(char *a)
 {
         int i;
          for (i=0; i<=MAXCHARS; i++) {
          if (a[i] != '\n')
              /* copy into new array /*
        }
 }

但是我有点迷失了。我现在不想打印该数组,因为稍后我将在程序中再次更改它;我还需要使用a.

非常感谢任何帮助/解决方案。谢谢。

最佳答案

一些指导:

  • 您最多只能将每个字符复制一次 - 向后复制到其目的地。无需额外副本。
  • 数组中将有一个“已完成”位置和一个“正在处理/读取”位置。
  • 跟踪当前可能重复的整行,并将每个新行与其进行匹配,以检查它是否是重复的。
  • 按整行而不是按字符前进 - 除非寻找下一个行尾。

关于c - 删除 C 中 char 数组中相同的连续行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50032662/

相关文章:

string - 如果字符数大于某个值,则截断 Excel 单元格内的字符串

c - 如何将二维数组的高度和宽度作为参数传递给方法?

java - 将对象转换为数组 [Java]?

c - 打印二维字符数组的镜像

python - 检查子字符串是否在字符串列表中?

ruby-on-rails - Ruby 检查字符串回文的方法

c - 从 float 和 double 中读取一个文件?

c - struct 的初始化函数(即 "constructor"),为什么变量没有正确初始化?

c++ - 可以使用 <、>、= 比较双字段吗?

c++ - 从文本文件读取到数组