Реализовать функцию, удаляющую в строке знаки пунктуации - C (СИ)
Формулировка задачи:
Реализовать функцию Compress, удаляющую в строке, переданной в качестве параметров, все символы пунктуации. Функция должна возвращать число удаленных символов. Используя эту функцию, преобразовать N строк, введенных пользователем
Решение задачи: «Реализовать функцию, удаляющую в строке знаки пунктуации»
textual
Листинг программы
#include <stdio.h> #include <string.h> int remove_chars(char * str, const char * del) { return ( str = strpbrk(str, del) ) ? 1 + remove_chars(memmove(str, str + 1, strlen(str)), del) : 0; } #define PUNCTS ",.;:!?" int main(void) { char buf[BUFSIZ]; while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) { int r = remove_chars(buf, PUNCTS); printf("Result: %s", buf); printf("%d chars removed.\n", r); } return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream.h, string.h
- Указание прототипа функции: int remove_chars(char str, const char del)
- Внутри функции remove_chars происходит проверка наличия символов из строки del в текущей строке str. Если такие символы есть, то функция перемещает указатель на первый такой символ в строке и рекурсивно вызывает саму себя, передавая в качестве аргументов функцию memmove, которая перемещает символы в строке, и строку del. Если символов из строки del нет, функция возвращает 0.
- В функции main происходит считывание строки из стандартного ввода до тех пор, пока не будет введен символ новой строки.
- После считывания строки вызывается функция remove_chars, которая удаляет из строки все символы из строки PUNCTS.
- Результат выводится на экран.
- В конце программы возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д