Нет вывода на консоль - PullRequest
       1

Нет вывода на консоль

2 голосов
/ 18 января 2012

Я только начинаю изучать C, это, наверное, очень простой вопрос для вас, ребята, но ваша помощь очень ценится.Я пытаюсь использовать этот код для подсчета количества символов, введенных в консоль, но когда я нажимаю клавишу ввода, он просто дает мне пустую новую строку, как printf не работает.Куда я иду не так?

int c, number;
while((c = getchar()) != EOF){
++number;
}
printf("%d\n", number);

Спасибо.

Ответы [ 4 ]

6 голосов
/ 18 января 2012

Когда вы нажимаете клавишу ввода, программа увеличивает счетчик, потому что она получает символ новой строки и ожидает дополнительного ввода.Вы должны передать программе EOF с помощью Ctrl + D (Linux, Unix, Mac) или Ctrl + Z , Введите (Windows).

1 голос
/ 18 января 2012
  1. Ввод не EOF, как уже указывалось в других ответах.
  2. После ввода EOF вы получите неправильный результат, поскольку вы не инициализировали number.Вы увеличиваете значение мусора.Инициализируйте его до нуля.

    int c, number = 0;

  3. Таким образом, новые строки также будут учитываться.Если вы хотите пропустить их, вам нужно проверить, что c не равно '\n', прежде чем увеличивать number.

0 голосов
/ 18 января 2012

enter это не EOF на консоли, это либо ctrl-Z (windows), либо ctrl-D (unix)

0 голосов
/ 18 января 2012

Если вы находитесь под Windows, нажмите Ctrl + Z и затем введите. Если под Linux, нажмите Ctrl + D. Это приведет к концу файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...