当我按下e或w或我选择的任何键并让用户输入值并再次恢复循环时,有什么方法可以暂停我的无限循环?
while(1){
//some code
//i want to pause this loop whenver i want with a key and resume again
}
答案 0 :(得分:0)
这取决于您使用的控制台。
如果你使用的是Windows shell,我会写这样的东西。
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
void checkKey() {
int key;
if (_kbhit()) {
key =_getch();
if (key == 'w' || key == 'e') {
getch();
}
}
}
int main(int argc, char **argv) {
printf("loop is doing something");
while(1) {
printf(".");
Sleep(100);
checkKey();
}
return 0;
}
_kbhit()检查是否按下了某个键然后getch()“暂停”程序,直到按下任何键。
对于unix终端实现,该代码将完全不同。在这种情况下,你应该阅读有关termio和非阻塞模式(非常困难的东西)。
如果您正在编写某种图形应用程序,那么您必须检查您正在使用的库的密钥处理文档。例如,用于OpenGL“GLUT”库的glutKeyboardFunc()的功能。
我希望这会有所帮助。如果您不理解某些内容,请随时询问。