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

终端non-canonical方式后,读取string的问题。

    来源: 互联网  发布时间:2016-06-27

    本文导语:  以下程序,在从屏幕读取char时(getchar()),terminal会按照non-canonical的方式显示处理输入数据,而在读取string时(gets()),则不会,为什么? #include  #include  #include  #include  int main() {     char str[10] = {0};     char c; ...

以下程序,在从屏幕读取char时(getchar()),terminal会按照non-canonical的方式显示处理输入数据,而在读取string时(gets()),则不会,为什么?

#include 
#include 
#include 
#include 

int main()
{
    char str[10] = {0};
    char c;
    int rlt;
    FILE* in;
    struct termios attr;

    if(!isatty(fileno(stdout)))
    {
        assert(0);
    }

    in = fopen("/dev/tty", "r");


    tcgetattr(fileno(in), &attr);
    attr.c_lflag &= ~ICANON;
    attr.c_lflag &= ~ISIG;
    attr.c_cc[VMIN] = 2;
    attr.c_cc[VTIME] = 0;
    rlt = tcsetattr(fileno(in), TCSANOW, &attr);

    puts("input char");
    c = getchar();

    puts("input string");
    gets(str);

|
gets需要等到回车符号呢!!!
     The fgets() function reads at most one less than the number of characters
     specified by size from the given stream and stores them in the string
     str.  Reading stops when a newline character is found, at end-of-file or
     error.  The newline, if any, is retained.  If any characters are read and
     there is no error, a `' character is appended to end the string.

     The gets() function is equivalent to fgets() with an infinite size and a
     stream of stdin, except that the newline character (if any) is not stored
     in the string.  It is the caller's responsibility to ensure that the
     input line, if any, is sufficiently short to fit in the string.

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • secureCRT下Linux终端汉字乱码解决方法
  • 终端 伪终端 控制终端有什么区别
  • 如何在windows下的DOS窗口中显示utf-8字符(CMD命令提示符终端显示utf-8字符)
  • 一个终端向另一终端发送命令,并在另一个终端上执行
  • CentOS安装Telnet,以root用户登陆Telnet以及CentOS的各种终端解释
  • 控制终端与终端设备是什么关系?
  • 如何得到一个终端的终端号/标示?
  • 终端、终端设备、控制台到底有什么区别和联系?(在线等,急!)
  • suse linux telnet连接到第30个终端后,无法打开新的终端
  • linux终端程序时如何隐藏终端
  • 如何关闭串口终端,切换终端?
  • linux终端或仿真终端如何打印图形??
  • 在内核中怎么操作伪终端,比如想在内核打印信息到telnet的终端
  • fedora 8 字符终端和图形终端互换
  • 有能在windows下连接linux(作为一个shell终端或x终端)的软件么?
  • sco unix5.05+升腾终端,如何查看取消升腾终端上的打印任务?
  • SuSE Linux 下"X终端"与"终端程序-超级用户模式"有什么区别?
  • 200分:请详细讲解一下虚终端和实终端
  • 终端打开应用程序,怎样使当终端退出时应用程序不退出.问了好多人,其实很简单.
  • 超时的时候就停止读终端问题,为什么还在读终端啊?
  • 如何在linux(终端:ctrl+alt+F1之类的。绝非虚拟终端)下显示256色或24位的BMP图片?


  • 站内导航:


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

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

    浙ICP备11055608号-3