Использование нестандартной функции ввода / вывода - неплохая практика per se ; это становится проблемой, если вы собираетесь портировать этот код на другую платформу, которая не поддерживает getch()
.
Проблема в том, что есть нет стандартных библиотечных функций, которые обнаруживают отдельные нажатия клавиш (getchar()
и fgetc()
буферизируются и требуют, чтобы вы нажали Enter, чтобы они вернулись); вам придется использовать что-то нестандартное, чтобы сделать это. Если вы намерены запустить этот код только на этой конкретной платформе, используйте getch()
, если это то, что вам нужно, и просто помните, что это решение не обязательно будет применяться к другим платформам. Если вы собираетесь портировать этот код на платформы, которые не поддерживают getch()
, изолируйте системный вызов за функцией-оболочкой, чтобы при переносе кода изменялся только код внутри функции-оболочки.
int getKeystroke(void)
{
/**
* Put platform-specific call here
*/
return getch();
}
int main(void)
{
... // do stuff here
getKeystroke();
return 0;
}