Дана строка символов до точки. Удалить из нее все слова, начинающиеся с буквы «а» - C (СИ)
Формулировка задачи:
Дана строка символов до точки. Удалить из нее все слова, начинающиеся с буквы «а».
Решение задачи: «Дана строка символов до точки. Удалить из нее все слова, начинающиеся с буквы «а»»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> int main(void) { char str[] = { "test1 asd test2 asdasd test3." }; size_t i; char *pBegin, *pEnd; for (i = 0; i < strlen(str); i++) { if ((str[i] == 'a' && i == 0) || (str[i] == 'a' && i > 0 && (ispunct(str[i - 1]) || isspace(str[i - 1])))) { pBegin = str + i; pEnd = pBegin; while (isalpha(*pEnd)) ++pEnd; strcpy(pBegin, pEnd); } } puts(str); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со строками и символами.
- Объявление и инициализация строки символов, которую необходимо обработать.
- Объявление переменных i, pBegin и pEnd, которые будут использоваться в цикле.
- Проход по каждому символу строки с помощью цикла for.
- Проверка условия для удаления слова, начинающегося с буквы
а
. - Если условие выполняется, то присваиваем указателю pBegin значение str + i, чтобы он указывал на первый символ слова, которое нужно удалить.
- Затем присваиваем указателю pEnd значение pBegin, чтобы он также указывал на первый символ слова, которое нужно удалить.
- Далее, с помощью цикла while, проверяем каждый последующий символ, начиная с pEnd, на предмет того, является ли он буквой.
- Если текущий символ является буквой, то увеличиваем значение pEnd на 1, чтобы он указывал на следующий символ.
- После прохода по всем символам слова, которое нужно удалить, вызываем функцию strcpy с аргументами pBegin и pEnd, чтобы скопировать все символы после слова, начинающегося с буквы
а
, в начало строки. - Вывод обработанной строки с помощью функции puts.
- Возврат 0, чтобы указать на успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д