如何在c语言中控制时间啊,

例如,在运行时需要输入,如果过了时间,就不允许输入,该怎么弄,求大神帮忙

这个问题可以用双线程也可以用双进程。
假设用双进程,
父进程计时间,到时间了就向子进程发送信号。
子进程收到进程不管scanf(当然或者其他输入数据的函数也可)是否收到数据
子进程一律终止。
事例代码如下:


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
static TIME_OUT=3;
int x=0;
int main(void)
{
    pid_t pid;
    int status=0;
    if((pid=fork())>0)
    {
        /*--when time over,you get a signal */
        sleep(TIME_OUT);
        kill(pid,SIGINT);
        waitpid(pid,&status,0);
    }else if(pid==0){
    signal(SIGINT,SIG_DFL);
    scanf("%d",&x);
    }
    if(x)
        printf("got a value for x=%d\n",x);
    else
        printf("Got defalut value\n");
    puts("---It's over--");
    return 0;
}

还有其他方法,想了解更多希望我们再做交流!
希望能帮到你!

楼主问题说的在详细点,在linux里还是windows,是终端,还是图形界面?

如果是linux终端的话,可以用ncurses库里的tcsetattr函数中的canon选项进行设置,也可以设个定时器

无论什么环境,大致的思路都一样,那就是开始运行程序的时候获取下系统时间,然后记录在一个全局变量里面。
用户输入的时候,拿当前时间减去开始运行的时间,超过了就不允许输入,否则允许。

windows里,我的意思是c语言中有一个scanf语句,在运行时需要输入,但是如果用户过了一段时间都不输入,就会结束。但是,c语言是顺序执行,如果执行到scanf时,不输入,没法往下进行,执行不到判断时间那一步。。。。。。这个问题如何结束

linux下楼上的代码就可以了,不过不用信号的话有个类似的解决办法,

 int ungetc(int c, FILE *stream)
ungetc pushes c (converted to an unsigned char) back onto stream, where it will be returned on the next read. Only one character of pushback per stream is guaranteed. EOF may not be pushed back. ungetc returns the character pushed back, or EOF for error.

使用这个函数往缓冲区放一个字符,程序睡3秒,然后读数据,如果还是这个字符说明用户没有输入,就继续执行