Почему getchar () не работает правильно? - PullRequest
9 голосов
/ 01 января 2012

Сегодня я написал простой фрагмент кода, который использует getchar() для подсчета введенных вами символов. Но когда я компилирую его на Cygwin, он не работает. Он всегда печатает 0, но я никогда ничего не вводил или не могу ввести символы, которые он печатает 0.

Однако, если я скомпилирую его с VC ++ 6.0, это сработает.

#include<stdio.h>
int main(void)
{
 long nc;

 nc = 0;
 while(getchar() != EOF)
    ++nc;
 printf("The total of characters you inputed is %ld.\n", nc);
 return 0;
}

1 Ответ

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

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

Мне было бы интересно узнатьчто случилось, когда вы попытаетесь

while(getc(stdin) != EOF)

и если это не сработает, попробуйте while(fgetc(stdin) != EOF)

Все они должны работать ,хотя эта страница предполагает, что между этими функциями могут быть различия в реализации.

Еще одна вещь, которую вы можете попробовать, - это напечатать значение ASCII того, что вы получите:

printf("%d\n",(int)getchar());

Кроме того, попробуйте выводить данные из файла, а не вводить его в консоли.Создайте файл input.txt, вставьте в него несколько символов и выполните

cat input.txt | ./program

РЕДАКТИРОВАТЬ: Вы пишете бегущий кот и работает, как работает.Я бы сказал, просто обновите вашу версию Cygwin.Вы столкнулись с ошибкой.Получить новейшие версии Cygwin и компилятор, и вы должны быть в порядке.Другой вариант - использовать scanf .

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