Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中迭代直到按下一个键_C - Fatal编程技术网

在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时生成的信号。是的,我看到了,顺便说一下,我说的是信号(),你的编码是对的:)