Цикл в цикле - C (СИ)

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

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

Программа которая копирует входного потока в выходной с заменой каждой строки,состоящей из одного или нескольких пробелов,одним пробелом
#include <stdio.h>
main()
{
    int c;
    while ((c = getchar()) != EOF)
    {
        if (c == ' ')
        {
            putchar(c);
            while ((c = getchar()) != EOF && c == ' ');
        }
        putchar(c);
    }
}
Не очень понятно что происходит в 10 строке кода и далее,т.е когда он первый раз встречает пробел он копирует в выходной поток с,а что дальше если за первым пробелом встречается второй подряд?

Решение задачи: «Цикл в цикле»

textual
Листинг программы
#include <stdio.h>
main()
{
    int c;
    while ((c = getchar()) != EOF)
    {
        if (c == ' ')
        {
            putchar(c);
            while ((c = getchar()) != EOF && c == ' ');
        }
        putchar(c);
        if (c==EOF) break;
    }
}

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

В этом коде выполняется следующее:

  1. Ввод данных: программа ожидает ввода данных с клавиатуры, используя стандартный ввод (переменная c).
  2. Ввод пробела: если введенный символ является пробелом, программа выводит его на экран и начинает ожидать следующего введенного символа, пока он также не будет пробелом.
  3. Вывод данных: программа выводит введенный символ на экран.
  4. Проверка на конец файла: если введенный символ является символом конца файла (EOF), программа завершает цикл и завершает работу.

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


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

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

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