我正在尝试创建一个函数来检测字符数组中是否有相同的连续行。
例如,如果 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/