我正在尝试创建一个递归函数来从字符串中删除连续重复的字符。它可以正常工作,除了前几个字符。例如,如果我的输入是 MMMMMuuuuuOOOOOKKKKLLLEE OOOOLLL
或类似的内容,输出是 MMuOKLE OL
。你可以看到,除了前两个 M 之外,其余部分都可以正常工作。如何使其对前面的部分也可以正常工作呢?以下是我的代码:
#include <stdio.h>
char* remove_duplicates (char* str){
if(*(str+1)!='\0'){
if(*str==*(str+1)){
*(str+1)=*(str+2);
remove_duplicates(str+1);
}
remove_duplicates(str+1);
}
return str;
}
int main()
{
char sample[] = "MMMMMuuuuuOOOOOKKKKLLLEE OOOOLLL";
printf("OLD: |%s|\n", sample);
printf("NEW: |%s|\n", remove_duplicates(sample));
return 0;
}
""
)传递给remove_duplicates()
函数会发生什么? - Steve Friedl""
给remove_duplicates()
。什么也没有发生。它再次打印出菜单。 - gokbeykeskinvoid remove_duplicates(char * str)
?这样做会使第二次调用毫无意义。 - bruno