从字符串中删除所有重复的字符 – 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); }