学习啦>学习英语>专业英语>计算机英语>

c语言中getchar的用法函数用法

时间: 长思709 分享

  当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止。下面小编就跟你们详细介绍下c语言中getchar的用法,希望对你们有用。

  c语言中getchar的用法

  1.getchar

  当输入终端在默认的输入模式(cooked)下时getchar是以行为单位进行存取,EOF(Unix/Linux下为组合键Ctrl+D)有两种作用,一个是换行符,一个是结束符。当缓冲区有其它字符时,它只是一个换行符,当前面没有字符是它就是一个地地道道的文件结束符。

  Getchar这个函数执行过程

  1.当调用getchar时,函数打开输入缓冲,并等待用户的输入。

  2.用户进行输入,并结束输入(ctrl+D,回车),此时的ctrl+d只是一个结束这一次输入的动作,并不是EOF.

学习啦在线学习网   3.getchar从缓冲区里取一个字符,并返回.

  4.缓冲区里字符队列头后移一位,等待再取。

  5.回车结束和ctrl+d结束不相同,回车也做为一个字符被存到缓冲区里,而ctrl+d并没有做为一个字符存储。

  6.缓冲队列没有字符,此时又按下了ctrl+d此时就是结束输入动作,也就是EOF。

  c语言中getchar的用法示例

  while((c = getchar()) != EOF)

  {

学习啦在线学习网   putchar(c);

  }

  执行程序并输入:”test”+”回车”。此时缓冲队列里就有”test+回车”,并开始返回一个字符”t”然后执行puchar(c)输出”t”,接着回到while取出“e”并输出”e”,反复执行直到取最后一个字符”回车”。然后可以继续输入,再次遇到换行符的时候,程序又会把那一行的输入的字符输出在终端上。如果想要结束程序执行必须在缓冲队列没有字符时输入EOF。要想正确理解这个问题 ,你就得记着linux下everything is file。从终端的输入也相当于一个文件,终端输入有两种方式,一种raw一种是cooked的。也就是一个是原始输入,一个是带缓存的。默认的方式是cooked的,所以一定要等到一个换行才完成一个缓存,而开始文件的读取,你可以用stty raw,sty cooked来分别设置。

  注意:

  getchar()的返回值一般情况下是字符,但也可能是负值,即返回EOF。这个EOF在函数库里一般定义为-1。因此,在这种情况下,getchar函数返回一个负值,把一个负值赋给一个char型的变量是不正确的。为了能够让所定义的变量能够包含getchar函数返回的所有可能的值,正确的定义方法如下

  int c;

  c = getchar();

学习啦在线学习网   2.改变终端的输入方式

学习啦在线学习网   static struct termios stored_settings;

  void set_keypress(void) //设置终端为RAW模式,并关闭回显

  {

  struct termios new_settings;

  cgetattr(0,&stored_settings);

学习啦在线学习网   new_settings = stored_settings;

  /* Disable canonical mode, and set buffer size to 1 byte */

学习啦在线学习网   new_settings.c_lflag &= (~ICANON);

  new_settings.c_lflag &= (~ECHO);

  new_settings.c_cc[VTIME] = 0;

  new_settings.c_cc[VMIN] = 1;

  tcsetattr(0,TCSANOW,&new_settings);

  return;

  }

  void reset_keypress(void) //恢复终端属性

  {

  tcsetattr(0,TCSANOW,&stored_settings);

  return;

  }

学习啦在线学习网   也可以用system(“stty raw”)

  System(“stty cooked”).


猜你喜欢:

1.getchar的使用方法与用途

2.c语言中free的用法

3.c语言pow的用法

4.c语言getchar的用法

5.c语言中getch的用法

c语言中getchar的用法函数用法

当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止。下面小编就跟你们详细介绍下c语言中getchar的用法,希望对你们有用。 c语言中getchar的用法 1.getchar 当输入终端在默认的输入模式(c
推荐度:
点击下载文档文档为doc格式

精选文章

  • c语言中free的用法如何工作
    c语言中free的用法如何工作

    free()与malloc()函数配对使用,释放malloc函数申请的动态内存。下面学习啦小编就跟你们详细介绍下c语言中free的用法,希望对你们有用。 c语言中free的用

  • c语言中fread的用法
    c语言中fread的用法

    学习啦在线学习网fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。下面小编就跟你们详细介绍下c语言中fread的用法,希望对你们有用。 c语言

  • c语言中fprintf的用法
    c语言中fprintf的用法

    学习啦在线学习网函数说明:fprintf()会根据参数format 字符串来转换并格式化数据, 然后将结果输出到参数stream 指定的文件中, 直到出现字符串结束(\0)为止。下面小编就跟你们

  • c语言中for的用法
    c语言中for的用法

    在C语言中,for语句使用最为灵活,它完全可以取代 while 语句。下面小编就跟你们详细介绍下c语言中for的用法,希望对你们有用。 c语言中for的用法如下:

522926