Отредактировать строку удаляя лишние пробелы между словами - C (СИ)

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

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

Отредактировать строку удаляя лишние пробелы между словами.На языке си.

Решение задачи: «Отредактировать строку удаляя лишние пробелы между словами»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
   printf("input text: ");
   char text[1024];
   fgets(text, sizeof(text)-1, stdin);
 
   char* str = text;
   size_t offset = 0;
   size_t count = 0;
   for (; *str; ++str)
   {
      count = (*str == ' ') ? count+1 : 0;
 
      if (count > 1)
      {
         offset++;
      }
      else
      {
         *(str - offset) = *str;
      }
   }
   *(str - offset) = 0;
 
   printf("result: %s", text);
 
   system("pause");
 
   return 0;
}

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

В этом коде на языке C выполняется следующая последовательность действий:

  1. Сначала пользователю предлагается ввести текст. Для этого используется функция printf для вывода сообщения с просьбой ввести текст, и затем используется функция fgets для считывания текста из стандартного ввода, с учетом того, что ввод может содержать символы новой строки (\n).
  2. Затем вводится цикл, который проходит по каждому символу введенного текста. Переменная str инициализируется значением text, а переменная offset инициализируется нулем. Переменная count используется для отслеживания количества пробелов, которые предшествуют текущему симвору.
  3. Внутри цикла проверяется, является ли текущий символ пробелом. Если это так, то значение count увеличивается на единицу.
  4. Если count больше 1, это означает, что текущий символ не является единственным пробелом между словами, поэтому мы увеличиваем offset на единицу, чтобы учесть все пробелы, которые мы собираемся удалить.
  5. Если count равен или меньше 1, это означает, что текущий символ является единственным пробелом между словами или является первым символом слова. В этом случае мы копируем текущий символ обратно в строку, начиная с позиции str - offset, чтобы удалить все пробелы перед ним.
  6. После завершения цикла, последняя позиция в строке обнуляется, чтобы убедиться, что в конце строки нет лишних пробелов.
  7. Наконец, исходная строка выводится обратно пользователю с помощью функции printf, и затем вызывается функция system, чтобы приостановить выполнение программы до тех пор, пока пользователь не нажмет любую клавишу.
  8. В конце программы возвращается значение 0, что означает успешное выполнение программы.

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


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

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

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