当前位置:  技术问答>linux和unix

请教C语言输入问题

    来源: 互联网  发布时间:2015-11-04

    本文导语:  #include  #include  #include  #include  int main() { char input=0; printf("ttttWelcome Back!nPress Any Key To Begin..."); while(input==0)   {     read(stdin,&input,1);   } return 1; } 环境:RH9.0+GCC3.2.3 运行后显示:          ...

#include 

#include 

#include 

#include 





int main()

{

char input=0;



printf("ttttWelcome Back!nPress Any Key To Begin...");

while(input==0)

  {

    read(stdin,&input,1);

  }

return 1;

}



环境:RH9.0+GCC3.2.3

运行后显示:
                    Welcome Back!
没有显示Press Any Key To Begin...
按键也没有反应

|
raw状态可以实现阻塞式读入(blocking read),如果终端没有字符输入,进程就一直等待,直到有字符输入为止,如果需要设置非阻塞式读入,可以使用ioctl() (I/O控制)系统调用。
阻塞式:
#include 
int main()
{
int c;
/*默认终端驱动处于普通一次有行模式*/

/*终端被修改处于一次一字模式*/
system("stty raw");
c = getchar();

/*回复到一次一行模式*/
system("stty cooked");
return 0;
}

非阻塞式:
#include 
#include 
int kbhit()
{
int i;
ioctl(0, 0, &i);
return i;
}

int main()
{
int i = 0;
int c = ' ';
system("stty raw -echo");
printf("enter 'q' to quit.n");
for (; c != 'q'; i++)
if (kbhit())
{
c = getchar();
printf("got %c, oniseration %c", c, i);
}

system("stty cooked echo");
}
return 0;
}

|
如果你想实现非阻塞输入,需要将输入设置为非阻塞状态,《Linux编程与实践》上面有一个例子,具体怎么实现我记不清楚了,你可以看看。

|
这是因为tty工作在canonical模式而不是raw模式。用ioctl设置为raw模式就可以了。这不是C语言的问题,而是跟具体的操作系统有关了。

在APUE和C-FAQ里有很详细的说明。

    
 
 

您可能感兴趣的文章:

  • 请教一下,如何在英文FC3中调用输入法输入中文?
  • 【新手请教】关于linux下的中文输入法?
  • 请教:Fedora中文输入的问题
  • 高分请教高手:我的汉字输入法都不能用了
  • 请教令textfield只能输入数字及小数点的方法?
  • 请教输入重定向
  • 请教:Red Hat Linux的输入法怎样加入及切换?
  • 请教linux英文环境下使用中文输入法
  • 请教从Textfield中捕获键盘输入?
  • 请教一个关于输入的问题?
  • 请教C下输入密码显示星号问题
  • 请教一个shell的技巧——怎么自动输入密码?
  • 请教给问题,给分哦!shell 中输入一个日期参数,得到该日期的星期。
  • 想请教一下在jsp下批量输入数据的方法,哪位有比较好的想法
  • 请教如何在LINUX下使用中文输入法编辑文档啊?
  • 请教UNIX C字符输入的检测函数?
  • 请教高手:linux下怎么安装输入法?
  • 请教:如何控制JTextField的输入字符个数,比如只准输入三个字符,光标不能再向右移动了。
  • 请教:关于linux输入子系统事件字段设置的问题
  • 请教高手(100分):关于B/S中的中文输入法问题。用微软的智能ABC在jTextArea老出错
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.
  • 请教UNIX下编程语言的选择问题
  • 请教C语言问题
  • freeBSD下语言的选型问题的请教
  • 初装RedHat9.0,关于语言安装的问题请教
  • 新手请教linux下的c语言编译!
  • 请教,在哪里能够查处Linux系统支持的语言编码。
  • 请教高手:C语言怎么知道一个进程是否存在(Linux下)
  • 请教:想用c语言编写能使浏览器启动的一个程序?
  • 请教:关于c语言结构的问题!
  • 请教如何用c语言在linux下实现检查某一用户密码长度?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教一个opengl的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3