使用键盘输入暂停循环

时间:2015-04-05 17:29:00

标签: c while-loop

当我按下e或w或我选择的任何键并让用户输入值并再次恢复循环时,有什么方法可以暂停我的无限循环?

 while(1){
//some code
//i want to pause this loop whenver i want with a key and resume again
}

1 个答案:

答案 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()的功能。

我希望这会有所帮助。如果您不理解某些内容,请随时询问。