Дана строка символов до точки. Удалить из нее все слова, начинающиеся с буквы «а» - 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, чтобы указать на успешное выполнение программы.