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

时间:2018-04-25 23:22:50

标签: c arrays string duplicates

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

例如,如果char数组包含:

  

您好

     

您好

     

您好

     

您好

     

您好

然后数组将更改为

  

您好

     

您好

基本上,我想检测连续的,相同的行,并删除它们,因此只剩下其中一行。如果一行与之前的行相同,但它们不是连续的,那就没关系。

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

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

我在想这样的事情:

    int deleteRepeats(char *a)
 {
         int i;
          for (i=0; i<=MAXCHARS; i++) {
          if (a[i] != '\n')
              /* copy into new array /*
        }
 }
但是我有些迷茫。我现在不想打印阵列,因为我将在以后的程序中再次更改它;我还是需要用一个。

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

1 个答案:

答案 0 :(得分:2)

一些指导:

  • 您只需将每个字符最多复制一次 - 向后复制到目的地。无需额外的副本。
  • 你已经完成了#34;最终到了这里&#34;数组中的位置和正在处理/读取的#34;位置。
  • 跟踪当前可能重复的全行,并将每一行与其匹配,以检查它是否是一个骗局。
  • 通过实线而不是字符前进 - 除非在寻找下一行结束时。