【发布时间】:2018-10-06 13:03:04
【问题描述】:
我正在尝试创建一个函数,该函数将检测 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.您要检测还是删除? 2. 您想要就地更改还是在单独的结果中进行更改? 3. 为什么你认为输入字符串最多只能有 MAXCHARS 个字符/八位字节? 4. 你假设字符串是美国 ASCII 字符集中的吗?
-
1.移动。 2. 理想情况下,更改将保留在 a 中,因为我稍后会使用它,所以我想很多不合时宜的内容会被转移。 3. 整体指令请求只需要担心 MAXCHARS 4. 是
标签: c arrays string duplicates