我想从给定的字符串中删除所有重复的字符。 例如“asdasd”=“asd”或“abbgga”=“abg”。从字符串中删除所有重复的字符-c
当我编译时,当cmd开始运行它,我得到“停止工作”的消息。
这是我的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
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);
}
你试过调试吗? – Bathsheba
更改'char * str =“asdasd”;'为'char str [] =“asdasd”;'如第一种情况一样'str'是存储在只读存储器中的字符串文字。 –
第一个问题:有256个字符不仅仅是26,而且需要允许所有这些字符。第二个问题:数组“asdasd”是一个字符串字符串,而字符串文字处于只读内存,所以这个语句:'str [j ++] = str [i];'会导致seg故障事件。 – user3629249