2015-10-12 2 views
1

Код:Чрезвычайно простая программа на C, почему я получаю такой вывод?

#include <stdio.h> 
int main() 
{ 
    long cn=1; 
    char ch; 
    while((ch=getchar())!=EOF) 
    { 
    printf("%ld\t%c\n",cn++,ch); 
    } 
} 

Когда входное слово «секретный» и нажать кнопку ввода он показывает сосчитать до 7, а не 6, то почему?

+2

'EOF' должен отличаться от любого персонажа! Таким образом, 'getchar' возвращает' int', а не 'char'. Включите предупреждения компилятора и относитесь к ним серьезно! – Olaf

+0

[Почему переменная, используемая для хранения возвращаемого значения getchar, объявляется как int?] (Http://stackoverflow.com/q/18013167/995714) –

ответ

11

Поскольку символ «ввести» также читается. Это фактически «новая строка», ASCII-код 10 (или hex 0A).

+0

Спасибо, я читал книгу Ritchie C и делал викторину для www .embeddedfunda.com –