Я столкнулся с каким-то странным поведением при вызове функций с параметрами, содержащими getch().
Возьмем, к примеру, следующий код:
_Bool IsKeyDown(char c)
{
if(!kbhit())
return 0;
char ch1 = getch();
printf("%c\n", c);
return 0;
}
/*
*
*/
int main(int argc, char** argv) {
while(1)
{
IsKeyDown('a');
IsKeyDown('b');
Sleep(100);
}
return (EXIT_SUCCESS);
}
Когда клавиша нажимается с этим кодом, несмотря ни на что, она всегда будет печатать 'a', который является параметром первой функции. Проблема в том, что «a» не является параметром второй вызываемой функции, но «a» по-прежнему печатается вместо «b». Почему это происходит?
ch
, а затем никогда не используете это значение? Почему вы делаете возвращаемое значение вашей функции_Bool
, но всегда возвращаете одно и то же. Почему вы не используете возвращаемое значение в вызывающем объекте? Я хотел бы убедиться, что логика верна, прежде чем вы зададите такой подробный вопрос о коде. - person Brandin   schedule 17.01.2014