Удалить символы из строки C

Необходимо удалить символы из строки (то есть после удаления строка сокращается). Нет четкого задания, я просто хочу понять, как это делать на СИ. Мучился несколько часов, но перед экраном одно и то же: "signal: segmentation fault (core dumped)"

Заранее всех благодарю.


Ответы (2 шт):

Автор решения: Рик Plays

В данном случае реализована функция для следующего задания: нужно удалить первое слово строчки. То есть, в отдельной функции я искал индекс, после которого начинается второе слово (слова разделены пробелом). Далее в эту функцию я передаю саму строчку и индекс, до которого нужно удалить все символы.

Вот моя реализация (get_size - также моя функция):

char* removal(char* string, int index) {
    int size = get_size(string);
    while (index > 0) {
        for (int i = index; i < size-1; ++i) {
            string[i] = string[i+1];
        }
        string[size-1] = '\0';
        --index;
    }
    
    return string;
}
→ Ссылка
Автор решения: Harry
char* removal(char* s, int idx)
{
    assert(idx >= 0 && idx <= strlen(s));  // Проверка допустимости значения index
    // Можно написать свою, можно выбросить :)
    for(char * f = s + idx, * t = s; *t++ = *f++;);
    return s;
}
→ Ссылка