Если при первом входе в цикл печатается ошибка, значит, во входном буфере уже что-то есть.Я гарантирую (при условии, что ваш компилятор не с ума сошел), что он не пропускает scanf
.Вы должны проверить, что он на самом деле получает, изменив:
printf("ERROR\n");
на:
printf("ERROR, code = %02x\n", computerType);
Я хотел бы предположить, что это новая строка с того момента, когда ваша программа запускала этот код (вы говорите, что этов первый раз, но неясно, имеете ли вы в виду первый раз в этом цикле когда-либо (с момента запуска программы) или первый раз при входе в этот цикл, но вы уже проходили его до этого запуска программы.
Когда вы вводите L ENTER в первый раз, ваш код вытянет L
, но не ENTER
. Если вы тогдавызовите этот код еще раз, он получит клавишу ENTER
.
Вы должны либо понимать и допускать то, что фактически было введено, либо использовать безопасную и звуковую функцию ввода, такую как эта .