Копирование входного потока в выходной с условием - C (СИ)

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

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

Доброго времени суток. Возник затуп. Нужно написать прогу для копирования входного потока в выходной с заменой каждлй строки, состоящей из одного или нескольких пробелов, одним пробелом. Вот код:
#include <stdio.h>
#include <locale.h>
 
int main()
{
    int c, flag;
 
    flag = 0;
    setlocale(LC_ALL,"Rus");
    while ((c = getchar())!=EOF)
    {
        if (c == ' ')
            flag = 1;
        if (c == '\n')
        {
            if (flag == 1)
                putchar(' ');
            if (flag == 0)
                putchar(c);
            flag = 0;
        }
    }
    getchar();
    return 0;
}
Проблема в том, что когда я ввожу пробел, то всё норм: выводится просто пробел вместо строки с пробелом. Но вот если вводится строка без пробелов, то ничего не выводится. Не понимаю, почему. Помогите, пожалуйста.

Решение задачи: «Копирование входного потока в выходной с условием»

textual
Листинг программы
 while((sym = getchar()) != '\n')

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

  1. В начале кода идет объявление переменной sym типа char.
  2. Далее, в цикле while происходит считывание символа из стандартного ввода (stdin) и присваивание его переменной sym.
  3. Условие цикла while гласит, что цикл будет выполняться до тех пор, пока считанный символ не будет равен символу новой строки ('\n').
  4. В каждой итерации цикла, считанный символ сохраняется в переменной sym.
  5. Если считанный символ равен символу новой строки, то цикл прекращается.
  6. Код, который находится после цикла while, будет выполнен только после его завершения.
  7. В данном случае, после цикла while, ничего не происходит, так как весь код находится внутри цикла и выполняется до его завершения.
  8. Если бы после цикла были еще какие-то действия, они бы выполнились после завершения цикла.
  9. В итоге, в переменной sym сохраняются все символы, которые были введены с клавиатуры (или другого источника ввода), пока не будет введен символ новой строки.

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


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

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

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