当前位置: 技术问答>linux和unix
getchar或scanf怎么一直阻塞啊!
来源: 互联网 发布时间:2015-07-01
本文导语: 在main里边. 调用 init();//自己写的 while(1) { c = getchar() ....... } 在不使用init()时, getchar会接收一个字符,然后处理下边代码. 而加入了自己写的init后getchar ,或 scanf 就一直阻塞了. 为什么会有这样的事? ...
在main里边.
调用
init();//自己写的
while(1)
{
c = getchar()
.......
}
在不使用init()时, getchar会接收一个字符,然后处理下边代码. 而加入了自己写的init后getchar ,或 scanf 就一直阻塞了. 为什么会有这样的事?
调用
init();//自己写的
while(1)
{
c = getchar()
.......
}
在不使用init()时, getchar会接收一个字符,然后处理下边代码. 而加入了自己写的init后getchar ,或 scanf 就一直阻塞了. 为什么会有这样的事?
|
kbhit()
{
int n;
ioctl(0, FIONREAD, &n);
return n;
}
用这个函数来判断有没有键盘输入,之后在读取.就可以解决
注意模式
system("stty raw");
system("stty cooked");
{
int n;
ioctl(0, FIONREAD, &n);
return n;
}
用这个函数来判断有没有键盘输入,之后在读取.就可以解决
注意模式
system("stty raw");
system("stty cooked");
|
这两个函数就是阻塞的,TC里面也是一样的
在TC里面有bioskey(int)这个函数可以处理这个问题
参数有三个含义 0-相当于getchar(), 1-检测有没有键按下 2-检测特殊键(如ctrl)
好像还有一个 keypress(),来检测是否有键按下,
如果有可以调用getchar() 或者 bioskey() 来获取
bioskey(0) 取得的返回值跟 getchar()的不一样,如果你需要的话我再给你
在本子上面记着呢,现在手头没有
但是我在linux下面还没有找到这个函数的替代函数
在TC里面有bioskey(int)这个函数可以处理这个问题
参数有三个含义 0-相当于getchar(), 1-检测有没有键按下 2-检测特殊键(如ctrl)
好像还有一个 keypress(),来检测是否有键按下,
如果有可以调用getchar() 或者 bioskey() 来获取
bioskey(0) 取得的返回值跟 getchar()的不一样,如果你需要的话我再给你
在本子上面记着呢,现在手头没有
但是我在linux下面还没有找到这个函数的替代函数
|
init()的代码?