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

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

例如,如果char数组包含:

你好

你好

你好

你好

你好

然后数组将更改为

你好

你好

基本上,我想检测连续的,相同的行,并删除它们,因此只剩下其中一行。 如果一行与早期行相同,但它们不是连续的,那么就没问题了。

实际上,整条线不必相同,但至少前79或MAXCHARS必须相同。

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

我想的是:

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

但我有点失落。 我现在不想打印arrays,因为我将在以后的程序中再次修改它; 我仍然需要使用。

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

一些指导:

  • 您只需将每个字符最多复制一次 – 向后复制到目的地。 无需额外的副本。
  • 你将在arrays中有一个“最终到达此处”的位置和一个“正在处理/读取”的位置。
  • 跟踪可能重复的当前全线,并将每条新线与其匹配,以检查它是否是一个欺骗。
  • 全线而不是字符前进 – 除了寻找下一行结束时。