Функция C, которая не «ждет» какого-либо ввода, но обнаруживает, если таковые имеются? - PullRequest
2 голосов
/ 04 января 2012

Есть ли функция C, которая не ожидает ввода, но если она есть, она обнаруживает ее? Здесь я пытаюсь бесконечно продолжать цикл, пока не будет нажата какая-либо клавиша. Я новичок, и все функции ввода, которые я изучил до сих пор, ждут, когда пользователь что-то введет .. Я надеюсь, что все ясно, хотя если я не буду, я с удовольствием выложу код ..

Ответы [ 4 ]

3 голосов
/ 04 января 2012

WIndows kbhit () выполняет именно эту неблокирующую проверку клавиатуры на готовность к графике , и здесь есть kbhit () для Linux

2 голосов
/ 05 января 2012

Так как никто не сказал это ясно ....

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

Как правило, вам будут доступны некоторые сторонние библиотеки. Например, если бы вы использовали Visual Studio, вы могли бы использовать http://msdn.microsoft.com/en-us/library/58w7c94c(v=VS.100).aspx. Я не уверен, что вам доступно с вашей настройкой.

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

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

Это зависит от того, что именно вы хотите сделать, но в целом:

A) Вы сохраняете вашу программу однопоточной и проверяете ввод с помощью неблокирующего ввода.

B) Вы создаете другой поток, который будет обрабатывать ввод и передавать результаты обратно в основной поток.

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

Вы должны использовать select или poll

...