从字符串中删除所有重复的字符 – c

我试图删除给定字符串中的所有重复字符。 例如“asdasd”=“asd”或“abbgga”=“abg”。

当我编译并且当cmd开始运行它时,我正在“停止工作”消息。

这是我的代码:

#include  #include  #include  void delMul(char str[]){ int i,j=0; int s[26]; char k ; for ( i = 0; i < 26; i++) { s[i] = 0; } for (i = 0; i < strlen(str); i++) { k = str[i] - 'a'; if(s[k] == 0) { s[k]++ ; str[j++] = str[i]; } } str[j] = '\0'; } int main(){ char *str = "asdasd"; delMul(str); puts(str); } 

在您的代码中, str指向一个字符串文字 ,可能不会被修改。 尝试使用由字符串初始化的数组。

在main中,您已将str声明为指向字符串的指针

因此,存储在程序中被分配为固定字符串而不是数据

因此,当您尝试在第18行str[j++]=str[i]写入时,有一个SEGV,因为这是不允许的

要更正此问题,请将字符串声明为已初始化的char数组

 int main(){ char str[] = "asdasd"; delMul(str); puts(str); }