Удалить все буквы из строки - 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;
}

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

В этом коде:

  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
Похожие ответы