Удалить символы из строки 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;
}