2013-05-30 3 views
1

У меня есть эта программа, и я хочу, чтобы увеличить на единицу и выводить значение моего счетчика каждый раз, когда я даю персонажуGetChar() функция обходит один цикл

#include <stdio.h> 

    int main(void){ 

     //Declarations 
     long nc; 

     //Instantiations 
     nc = 0; 

     while (getchar() != EOF){ 
      ++nc; 
      printf("%ld\n", nc); 
     } 

     return 0; 
    } 

Когда цикл начинает при нажатии клавиши ENTER Я получаю 1,2,3,4,5 ... что нормально. Но если я набираю символ или что-то еще, он печатает следующие два числа 12,34,56,78. Почему это происходит?

Я запускаю программу на gcc 4.6.3 выпуск Ubuntu 12.04.

ответ

3

Клеммный ввод обычно line buffered. Ваша программа получает входные данные только при нажатии ENTER. Если вы наберете несколько символов, вы получите одну строку вывода для каждого введенного вами символа (плюс сама новая линия), так как getchar() возвращает каждый символ в последовательности.

+1

Благодарим вас за ответ, вполне объяснительный. Я не заметил, что если я напишу больше символов, я получаю больше приращений и отпечатков. –

Смежные вопросы