判断是否有输入

kinbol1992 2012-06-15 02:45:45
有没有这样的函数或者功能,可以在一个循环中当没有输入的时候就一直执行这个循环,而当有键盘输入相应指令的的时候就去执行那个指令??求解!!
...全文
228 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
laoyang103 2012-06-15
  • 打赏
  • 举报
回复
楼主是想做小游戏了吧 建议用kbhit接收消息system("cls")刷屏
cainiaohhf 2012-06-15
  • 打赏
  • 举报
回复
select,可以查看相关文档
Mr_yyy 2012-06-15
  • 打赏
  • 举报
回复
我自己研究了一下,用了time.h和kbhit()即可实现!
#include <stdio.h>
#include <time.h>
#include <conio.h>
int main()
{
time_t t1,t2;
int i,tag=1; //设置标志tag,用来判断是否有输入
printf("等待用户输入2秒钟,超时自动跳过此操作!\n");
time(&t1); //记录此刻的时间!
while(!kbhit())
{
time(&t2); //记录此刻时间 与t1比较,若相差大于2,即停止输入

if((int)(t2-t1)>2)
{
printf("操作已自动终止!用户无法输入信息!\n");
tag=0;
break;
}
//这里并非真的停止输入,而是通过改变标志符tag,使其跳过输入!
}
if(tag)
{
scanf("%d",&i);
printf("用户已输入信息!%d\n",i);
}
return 0;
}
Mr_yyy 2012-06-15
  • 打赏
  • 举报
回复
用kbhit()这个函数可以实现,它本身就是用来检测有无按键输入。。可以设置一个循环同时要设置一个标志
tag = 0;
while(!kbhit())
{
//无限循环
tag = 1;
}
if(tag)
{
scanf();
//相应内容
}
这样就做到了没有输入时无限循环,有输入时就可接受输入的值,并且执行相应的内容
赵4老师 2012-06-15
  • 打赏
  • 举报
回复
_kbhit
justkk 2012-06-15
  • 打赏
  • 举报
回复
Linux 环境成功执行,Windows 环境应该也可以参考。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/select.h>

int main()
{
fd_set rset;
struct timeval tv;

tv.tv_sec = 2;
tv.tv_usec = 0;

FD_ZERO(&rset);
FD_SET(0, &rset);

int b = select(1, &rset, NULL, NULL, &tv);

if( b == 0 )
{
printf("no input in 2 secs\n");
return 0;
}

char buf[128];
fgets(buf, 100, stdin);
printf("buf=[%s]\n", buf);
return 0;
}
kinbol1992 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
引用 3 楼 的回复:
引用 1 楼 的回复:
select() 这个可以用来检测

可以说的浅显明白一点吗?我还是个很菜的菜鸟呢……

你是什么环境?Windows or Linux?
查看一下select的联机帮助,有例子的
[/Quote]
windows
justkk 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:
select() 这个可以用来检测

可以说的浅显明白一点吗?我还是个很菜的菜鸟呢……
[/Quote]
你是什么环境?Windows or Linux?
查看一下select的联机帮助,有例子的
自信男孩 2012-06-15
  • 打赏
  • 举报
回复
函数调用就是这样完成的。这个循环可以理解为主函数。
tongzhipeng5699 2012-06-15
  • 打赏
  • 举报
回复
scanf有返回值,当没有输入时,会返回0,可以依据这个返回值来判断有没有输入。
示例如下:

#include <stdio.h>

int main(void)
{

while(1) {
char str[100]="";
int res=scanf("%s",str);
if(res!=0)
system(str);//你想执行的命令
}

return 0;
}
kinbol1992 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
select() 这个可以用来检测
[/Quote]
可以说的浅显明白一点吗?我还是个很菜的菜鸟呢……
Gloveing 2012-06-15
  • 打赏
  • 举报
回复
while(1)
{
char a[100] = {0};
if scanf( "%s", a)
{

//.....
}



}
justkk 2012-06-15
  • 打赏
  • 举报
回复
select() 这个可以用来检测

70,024

社区成员

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

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