Удалить все буквы из строки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

День добрый, подскажите, пожалуйста. Нужно реализовать вот такую вещь: Ввести строку символов, если ее длина >5, удалить все буквы – a..z.

Решение задачи: «Удалить все буквы из строки»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. char * remove_if(char * str, int (*func)(int)) {
  6.     char * s = str;
  7.    
  8.     while ( *s ) {
  9.         if ( func(*s) )
  10.             memmove(s, s + 1, strlen(s));
  11.         else
  12.             ++s;
  13.     }
  14.    
  15.     return str;
  16. }
  17.  
  18. int main(void) {
  19.     char buf[BUFSIZ];
  20.    
  21.     while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
  22.         printf("Result: %s", ( strlen(buf) > 5 + 1 /* '\n' at the end of string */ ) ? remove_if(buf, isalpha) : buf);
  23.    
  24.     return 0;
  25. }

Объяснение кода листинга программы

В этом коде:

  1. remove_if - это функция, которая принимает два аргумента: строку и функцию, определенную в виде указателя на функцию. Эта функция перемещает все символы в строке, которые не удовлетворяют условию, определенному функцией, на одну позицию вперед, тем самым удаляя их. Функция возвращает новую строку без удаленных символов.
  2. main - это функция, которая считывает строку от пользователя, вызывает функцию remove_if для этой строки, используя функцию isalpha в качестве условия, и затем выводит результат обратно пользователю.
  3. buf - это буфер, который используется для хранения строки, считанной из стандартного ввода.
  4. BUFSIZ - это размер буфера.
  5. printf и fgets - это функции ввода, используемые для считывания строки от пользователя.
  6. strlen - это функция, которая возвращает длину строки.
  7. isalpha - это функция, определенная как указатель на функцию, которая возвращает ненулевой результат для любых буквенно-цифровых символов и ноль для всех остальных символов.
  8. memmove - это функция, которая перемещает блок памяти в другую позицию в том же блоке памяти, не меняя его содержимое. В этом коде она используется для удаления символов из строки, перемещая все символы после них на одну позицию вперед.
  9. \n - это символ новой строки, который указывает на конец строки.
  10. return 0 - это оператор, который указывает на успешный конец выполнения функции.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы