在C中迭代直到按下一个键
我需要让用户在循环仍在迭代/循环时停止循环 我希望我的程序多次显示“秒”,直到用户暂停它在C中迭代直到按下一个键,c,C,我需要让用户在循环仍在迭代/循环时停止循环 我希望我的程序多次显示“秒”,直到用户暂停它 #include<stdio.h> #include<time.h> #include<conio.h> #include<stdlib.h> #define p printf #define s scanf int main(void) { int i,j; time_t seconds; do {
#include<stdio.h>
#include<time.h>
#include<conio.h>
#include<stdlib.h>
#define p printf
#define s scanf
int main(void)
{
int i,j;
time_t seconds;
do
{
i=seconds;
seconds=time(NULL);
j=seconds;
if(i!=j)
{
p("sec");
}
}while(j==j);
getchar();
return(0);
}
#包括
#包括
#包括
#包括
#定义p printf
#定义s扫描
内部主(空)
{
int i,j;
时间t秒;
做
{
i=秒;
秒=时间(空);
j=秒;
如果(i!=j)
{
p(“sec”);
}
}而(j==j);
getchar();
返回(0);
}
使用getch或scanf,每次都会停止循环。有人能帮我吗?
我在想,可能有一些功能可以检测按键是否被按下,但不必等待按键继续循环。当然,j==j是保持一个无限循环
天哪,我在这里找到了解决方案:
如果你想我不能发布完成的程序,这是给一个想提高射击水平的朋友的。你可以使用信号处理程序来处理SIGINT。因此,当用户按下Ctrl+C时,控件将传递给信号处理程序,您可以选择在其中执行什么操作
void handler(int);
int main(){
signal(SIGINT, handler);// Register the signal handler
...
}
void handler(int sig)
{
// Your logic to decide what to do when Ctrl + C is pressed
}
参考:
[1] -如何通过按任意键来暂停?我认为不使用线程无法解决此问题。在windows上,您可以使用
kbhit
,在*nix系统上,您需要对终端设置进行修改,以便编写自己的kbhit
函数。BASIC是一种编程语言。你的问题不是关于基本的,不应该被标记为BASIC
@Subinoy,它当然可以。像select()
调用这样简单的操作将区分输入是否可用,如果配置为不等待,则继续。异步IO是一种东西,你知道。:)这些信号不适用于任何键盘按键,只适用于信号。是吗?使用它,我们不仅可以ctrl+c
,还可以使用'ctrl+`和其他信号生成组合。它专门用于处理按下ctrl+c时生成的信号。是的,我看到了,顺便说一下,我说的是信号(),你的编码是对的:)