Member 12914219 Ответов: 2

В то время как проблема цикла ?


почему loop печатает hello 4 раза, когда я даю три слова charcter.... olso последнее hello печатается в новой строке.....

Что я уже пробовал:

int main()
{
  int c;
  while ((c = getchar()) != EOF)
  {
    putchar(c);   

    printf("hello");
  }
}

[no name]

Потому что ваше 3-символьное слово + ввод = 4 символа и 4 приветствия?

2 Ответов

Рейтинг:
17

OriginalGriff

Потому что вы не набрали 3 символа - вы набрали 4, Если включить ввод в конце, который getc (и таким образом getchar который зовет getc на stdin) делает. Он также проходит как символ "\n". Это легко проверить:

while ((c = getchar()) != EOF)
  {
    printf("\"%c\"", c);
  }


Рейтинг:
0

Patrice T

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.