Цикл в цикле - C (СИ)
Формулировка задачи:
Программа которая копирует входного потока в выходной с заменой каждой строки,состоящей из одного или нескольких пробелов,одним пробелом
Не очень понятно что происходит в 10 строке кода и далее,т.е когда он первый раз встречает пробел он копирует в выходной поток с,а что дальше если за первым пробелом встречается второй подряд?
#include <stdio.h>
main()
{
int c;
while ((c = getchar()) != EOF)
{
if (c == ' ')
{
putchar(c);
while ((c = getchar()) != EOF && c == ' ');
}
putchar(c);
}
}Решение задачи: «Цикл в цикле»
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;
}
}
Объяснение кода листинга программы
В этом коде выполняется следующее:
- Ввод данных: программа ожидает ввода данных с клавиатуры, используя стандартный ввод (переменная
c). - Ввод пробела: если введенный символ является пробелом, программа выводит его на экран и начинает ожидать следующего введенного символа, пока он также не будет пробелом.
- Вывод данных: программа выводит введенный символ на экран.
- Проверка на конец файла: если введенный символ является символом конца файла (EOF), программа завершает цикл и завершает работу.