【发布时间】:2021-07-12 13:33:05
【问题描述】:
我正在用 C 语言创建一个函数,用于删除字符串中的所有重复项。
如果我运行此代码并在main() 函数中提供index,它就可以工作。
char *clean(char *list, int index) {
int val = 0;
char temp_list[index];
for (int i = 0; i < index; i++) {
if (list[i] != list[i + 1]) {
temp_list[val] = list[i];
val += 1;
}
}
for (int y = 0; y < val; y++) {
list[y] = temp_list[y];
}
return list;
}
但如果我运行这段代码,它似乎不起作用。
char *clean(char *list) {
int index = strlen(list);
int val = 0;
char temp_list[index];
for (int i = 0; i < index; i++) {
if (list[i] != list[i + 1]) {
temp_list[val] = list[i];
val += 1;
}
}
for (int y = 0; y < val; y++) {
list[y] = temp_list[y];
}
return list;
}
在第二个代码中,索引始终为零。
谁能解释一下为什么strlen() 函数不起作用。
【问题讨论】:
-
一旦
i是index-1,list[i + 1]会是什么?而且你不会用'\0'终止你的temp_list。如果没有重复,甚至没有空间。为了完整起见,您应该为工作和非工作情况发布minimal reproducible example。 -
strlen()完美运行。请告诉我们minimal reproducible example,以便我们了解您如何调用您的函数。