Удалить все символы в строке, не являющиеся буквами - C (СИ)
Формулировка задачи:
Удалить все символы в строке, не являющиеся буквами, а также
заменить множественные пробелы одним.
Решение задачи: «Удалить все символы в строке, не являющиеся буквами»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> char* ch_remove(char* s, int (*pfn)(const char*)){ char* p1, *p2; for(p1 = p2 = s; *p1; *p1 = *(++p2)){ if(! (*pfn)(p2)) ++p1; } return s; } static int cmp(const char* s){ return (! isalpha(*s) && ! isspace(*s)) || ((*s == ' ') && (*s == *(s + 1))); } int main(void){ char s[] = ",...[]]]dog, fox, [bat], {{{{cat},,,, fin.."; puts( ch_remove(s, cmp) ); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: iostream.h и ctype.h
- Определяется функция с именем ch_remove, которая принимает два аргумента: указатель на строку и функцию-предикат.
- Внутри функции ch_remove объявляются две переменные: p1 и p2, которые будут использоваться в цикле.
- Инициализируются значения p1 и p2, где p1 указывает на первый символ строки, а p2 - на второй.
- Запускается цикл, который будет выполняться до тех пор, пока есть символы в строке.
- Внутри цикла проверяется, является ли текущий символ буквой. Если нет, то он удаляется из строки, инициализируя p1 следующим символом.
- После цикла возвращается исходная строка.
- Определяется статическая функция cmp, которая принимает указатель на строку и возвращает значение, определяющее, является ли символ буквой или пробелом.
- В функции cmp проверяется, является ли текущий символ буквой или пробелом. Если нет, то возвращается значение, которое позволяет функции ch_remove удалить этот символ.
- В функции main определяется строка s, которая содержит набор символов для обработки.
- Вызывается функция ch_remove, передавая ей в качестве аргументов строку s и функцию cmp.
- Выводится результат работы функции ch_remove.
- Функция main возвращает 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д