小白求问C语言问题——如何实现如果在一定时间内没有输入就跳过一段代码,继续执行下面的?

qq_33069397 2015-11-23 11:10:38
如题,比如我想做到这样:printf(“如果你三秒钟之内什么也不输入,我就输出-1。”);
之后程序等待三秒钟,如果输入任何东西,程序正常向下执行,如果三秒内都没有输入,就输出-1。

我用的是DEVC++ 请各位大神帮帮忙 感激不尽~~~
...全文
2759 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2015-11-24
  • 打赏
  • 举报
回复 2

#include <windows.h>
#include <conio.h>

int main()
{
	printf("如果你三秒钟之内什么也不输入,我就输出-1。\n");
	Sleep(3000);
	if(!_kbhit())
		printf("-1\n");
	else
		printf("输入了%c", getchar());
	return 0;
}
paschen 2015-11-24
  • 打赏
  • 举报
回复 1
另可这样改进:把判断放在一个循环里,同时在循环中检查时间是否超出,这样在用户有输入的情况下不用等3秒后才往后执行
赵4老师 2015-11-24
  • 打赏
  • 举报
回复
第18行 if (k==0 || k==0xe0) k=(k<<8)|_getch(); 应改为 if (k==0 || k==0xe0) k|=_getch()<<8;
赵4老师 2015-11-24
  • 打赏
  • 举报
回复
继承楼上:
#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include <locale.h>
int main() {
    int k;

    setlocale(LC_ALL,"chs");
    printf("如果你三秒钟之内什么也不输入,我就输出-1。\n");
    Sleep(3000);
    if(!_kbhit())
        printf("-1\n");
    else {
        printf("输入了");
        while (1) {
            if (_kbhit()) {
                k=_getch();
                if (k==0 || k==0xe0) k=(k<<8)|_getch();
                if (0x21<=k && k<=0x7E) printf("%c",k);
                else printf("<%04x>",(unsigned)k);
            } else break;
        }
        printf("\n");
    }
    return 0;
}
qq_33069397 2015-11-24
  • 打赏
  • 举报
回复
多谢大神们了 真的很有帮助

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧