Удалить все буквы из строки - C (СИ)
Формулировка задачи:
День добрый, подскажите, пожалуйста. Нужно реализовать вот такую вещь:
Ввести строку символов, если ее длина >5, удалить все буквы – a..z.
Решение задачи: «Удалить все буквы из строки»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h> char * remove_if(char * str, int (*func)(int)) { char * s = str; while ( *s ) { if ( func(*s) ) memmove(s, s + 1, strlen(s)); else ++s; } return str; } int main(void) { char buf[BUFSIZ]; while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) printf("Result: %s", ( strlen(buf) > 5 + 1 /* '\n' at the end of string */ ) ? remove_if(buf, isalpha) : buf); return 0; }
Объяснение кода листинга программы
В этом коде:
- remove_if - это функция, которая принимает два аргумента: строку и функцию, определенную в виде указателя на функцию. Эта функция перемещает все символы в строке, которые не удовлетворяют условию, определенному функцией, на одну позицию вперед, тем самым
удаляя
их. Функция возвращает новую строку безудаленных
символов. - main - это функция, которая считывает строку от пользователя, вызывает функцию remove_if для этой строки, используя функцию isalpha в качестве условия, и затем выводит результат обратно пользователю.
- buf - это буфер, который используется для хранения строки, считанной из стандартного ввода.
- BUFSIZ - это размер буфера.
- printf и fgets - это функции ввода, используемые для считывания строки от пользователя.
- strlen - это функция, которая возвращает длину строки.
- isalpha - это функция, определенная как указатель на функцию, которая возвращает ненулевой результат для любых буквенно-цифровых символов и ноль для всех остальных символов.
- memmove - это функция, которая перемещает блок памяти в другую позицию в том же блоке памяти, не меняя его содержимое. В этом коде она используется для
удаления
символов из строки, перемещая все символы после них на одну позицию вперед. - \n - это символ новой строки, который указывает на конец строки.
- return 0 - это оператор, который указывает на успешный конец выполнения функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д