Найти в строке и удалить из нее последовательности повторяющихся символов - C (СИ)
Формулировка задачи:
Найти в строке и удалить из нее последовательности повторяющихся символов
(например, "abcxxxxxacbyyyyyyyyyyyyyyyz" - "abcacbz")
Решение задачи: «Найти в строке и удалить из нее последовательности повторяющихся символов»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> void del(char* ); int main() { char str[BUFSIZ]; puts("Input line:"); fgets(str, BUFSIZ, stdin); del(str); puts(str); return 0; } void del(char* p) { char *a = p, *b = p + 1; while(*b){ while(*b && *b++ != *a) *p++ = *a++; while(*b && *b++ == *a); a = b - 1; } *p = '\0'; }
Объяснение кода листинга программы
В этом коде реализована функция удаления повторяющихся символов из строки. Список действий:
- Ввод строки с помощью функции fgets в буфер str, размер которого определяется макросом BUFSIZ.
- Вывод строки на экран.
- Вызов функции del с передачей в неё указателя на начало строки (str).
- В функции del создаются два указателя: a указывает на текущий символ, b- на следующий.
- В цикле while считывается текущий символ и проверяется, совпадает ли он с предыдущим. Если да, то он пропускается, если нет- копируется в выходную строку.
- После окончания цикла, последний символ добавляется в выходную строку.
- Выходная строка выводится на экран.
- Возвращается 0, заканчивая работу функции main.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д