Удалить из строки все символы, расположенные до первого и после последнего символа "+" - C (СИ)

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

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

ТЗ: ввести строку. Удалить все символы, расположенные до первого и после последнего символа "+".

Решение задачи: «Удалить из строки все символы, расположенные до первого и после последнего символа "+"»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    char *str = (char*)malloc(sizeof(char) * 1007);
    gets(str);
    
    while(*str != '+') str++;
    
    char *end = str + strlen(str) - 1;
    while(*end != '+') 
    {
        *end = 0;
        end--;
    }
    
    puts(str);
    
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы для работы с памятью и строками
  2. Объявляем функцию main()
  3. Выделяем память под строку, используя malloc. Задаём размер в 1007 символов, так как в C строки представлены как массивы символов, завершающиеся нулевым символом ('\0').
  4. Используем функцию gets() для заполнения выделенной памяти строкой.
  5. Инициализируем указатель str, указывающий на начало строки.
  6. В цикле while считываем символы до тех пор, пока не встретим символ '+'. С помощью оператора инкремента увеличиваем значение указателя на единицу после каждой итерации цикла.
  7. После окончания цикла while, получаем указатель на последний символ строки, вычитая из него длину строки - 1.
  8. В обратном цикле while считываем символы, начиная с конца строки, до тех пор, пока не встретим символ '+'.
  9. Внутри цикла заменяем текущий символ на нулевой символ ('\0'), чтобы удалить его из строки. Указатель при этом уменьшается на единицу.
  10. После окончания цикла while выводим измененную строку на экран с помощью функции puts().
  11. Возвращаем 0, чтобы операционная система знала, что программа успешно завершилась.

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


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

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

6   голосов , оценка 4.167 из 5
Похожие ответы