【发布时间】:2019-06-13 04:49:28
【问题描述】:
我试图让一个while循环进行迭代,直到按下一个键,理想情况下是输入。
具体来说,我想要一个值不断更新并对用户可见,直到他按下回车键。
这是我正在使用的基本代码,但它并没有像我希望的那样工作
while(1){
printf("Press Enter to Continue\n");
printf("Value to Update: %f\n",value_to_update);
usleep(10000);
system("clear");
while(getchar() != '\n'){
continue;
}
};
谢谢。很高兴澄清我所说的任何内容或回答其他问题。
我不确定如何准确地解释我在寻找什么。我会尝试两种方法:
1) 我希望它执行以下代码的操作,除了在用户按下回车时停止:
while(1){
printf("Value to Update: %f\n",value_to_update);
usleep(10000);
system("clear");
};
2) 我会列举步骤
1) 将要更新的值打印到屏幕上
2) 等待N微秒
3) 用户按下是否输入?
3.False) 如果否:清屏,进入步骤1
3.True) 如果是:从循环中中断
我想这比我想象的要难得多。
【问题讨论】:
-
您能否更具体地说明“无法按我的意愿工作”的意思?您看到的输出是什么?
-
发布输入使用和输出看到,输出期望。
-
如果你想让它在后台运行,而你在前台更新显示,你需要用户操作系统特定的代码,它不能在标准 C 中完成。
-
旁注:我会将您的
printf呼叫移动到在屏幕清晰之后。否则,它们将被输出,然后屏幕很快被清除,用户可能看不到它们,并且会留下一个空白屏幕,不知道该怎么做。 -
听起来问题在于 getchar() “阻塞”。考虑使用curses。它是为文本模式“屏幕控制”定制的。就像等待用户点击
... 或任何其他键,例如控制键。它可以从 C 中调用,并且与平台无关,包括 Windows 和 Linux。
标签: c while-loop user-input