Выполнение пропускает getchar () в цикле после возврата каретки и putchar ()?
Это'Я впервые публикую здесь, так что, надеюсь, все пойдет по плану.
я делаю одно из ранних упражнений от K &R. Цель состоит в том, чтобы использовать getchar (), чтобы получить кучу символов от пользователя, а затем распечатать их, используя putchar (), но пропуская лишние пробелы. Мое решение для упражнения прекрасно работает, но я нене понимаю почему.
Вот'С программой:
#include
int main()
{
int c, spc;
c = 0;
spc = 0;
while(c != EOF)
{
c = getchar();
if(c == ' ')
{
if(spc != 1)
{
putchar(c);
spc = 1;
}
}
if(c != ' ')
{
spc = 0;
putchar(c);
}
}
return 0;
}
Существует только один цикл, и выполнение останавливается во время первой итерации, когда он достигает getchar (), как и ожидалось. После нажатия кнопки возврата каретки программа продолжает печатать все, что пользователь ввел в буфер, без лишних пробелов - именно то, что нужно.должен делать.
Но что я нене понимаю, почему исполнение неt останавливаться на каждой последующей итерации цикла, когда он сталкивается с getchar (). Имеет ли отношение персонаж / n к этому? Я заметил, что он также печатает новую строку, и после того, как каждая вещь напечатана, он снова останавливается на getchar (). Итак, почему он пропускает getchar () в начале каждой итерации при печати всего в буфере?
долгое время играл с C, но только недавно приложил усилия, чтобы выучить егоправо' путь. Так как у меня есть некоторый опыт, ты нене нужно тупить ваши ответы внизтоже много (так, как тыобъясни это 10-летнему, а не 5-летнему).