Удалить все буквы из строки - 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 - это оператор, который указывает на успешный конец выполнения функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д