【发布时间】:2018-10-21 02:22:17
【问题描述】:
我正在尝试从给定字符串中删除连续重复的字符。
例子:
bssdffFdcrrrtttii ***#
输出应该是:
bsdfFdcrti *#
这段代码不起作用,只打印第一个字符(b),我想了解我的错误。 当我进行 printf 测试时,它可以工作,但不适用于空格。 我认为问题可能出在新的 char 数组上。
void Ex6() {
char* string[80];
scanf("%s", &string);
puts(removeDup(string));
}
char* removeDup(char *string) {
int i, c = 0;
char* newString[80];
for (i = 0; i < strlen(string); i++) {
if (string[i] != string[i + 1]) {
newString[c++] = string[i];
}
}
return newString;
}
【问题讨论】:
-
您认为
char* string[80];和char string[80];之间有什么区别? “它有效,但不适用于空格” --> 将char* string[80]; scanf("%s", &string);更改为char string[80]; fgets(string, sizeof string, stdin);并 启用所有编译器警告 以节省时间。报告您不清楚的警告。 -
char* x、char* x[n]和char x[n]之间存在巨大差异,因此在指定类型时请非常小心。