Я пытаюсь удалить все повторяющиеся символы из заданной строки. Например, "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» является строковым литералом, а строковые литералы находятся в памяти readonly, поэтому этот оператор: 'str [j ++] = str [i];' приведет к событию сбоя seg. – user3629249