Я хочу поместить текст в мою строку и обработать его в бесконечном цикле, но я хочу разорвать цикл, если первым символом ввода является клавиша ESCAPE, но getchar возвращает 10, когда я нажимаю ESCAPE, а затем ENTER ,
printf
правильно печатает введенный символ, но если я нажму ESCAPE, ничего не произойдет. Я также не хочу использовать _getch()
или getche()
, которые фактически решат мою проблему, но они также удаляют c
из буфера и не отображают его должным образом.
Что я могу сделать?
int c;
while( 1 )
{
c = getchar();
printf( "c = %d\n", c ); // just for debug
if( c == 27 ) break;
else ungetc( c, stdin );
fgets( StrIn, BUF_SIZE - 1, stdin );
// REST OF CODE ********
}
РЕДАКТИРОВАТЬ Я только что нашел функцию Microsoft
if( GetAsyncKeyState( VK_ESCAPE ) )
break;
это прекрасно работает для меня. Спасибо за чтение и за ваше время, моя проблема решена.