一些读取字符函数小结(getchar getch getche)

来源:互联网 发布:网页数据导出excel 编辑:程序博客网 时间:2024/05/16 07:41


getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab)
         是stdio.h中的库函,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了,第一次getchar()时,确实需要人工的输入,但是如果你输了多个字符,以后的getchar()再执行时就会直接从缓冲区中读取了
               从stdio流中读字符,相当于getc(stdin),它从标准输入里读取下一个字符。返回类型为int型,返回值为用户输入的ASCⅡ码,出错返回-1。
getchar 由宏实现:#define getchar() getc(stdin)。
getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar函数的返回值是用户输入的字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键

getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCⅡ码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.
这个版本忽略了个重点,getch()是非缓冲输入函数,就是不能用getch()来接受缓冲区已存在的字符,如以下C++程序,
<span style="font-size:18px;">#include<stdio.h>#include<conio.h>main(void){    int c;    int a;    a=getchar();         if (EOF!=a)        printf("%c",a);   //输出第一个字符             while((c=getchar())!='\n')//c接收的值是输入第一个字符后按下的回车换行符'\n',c是不会显示的    {             printf("%c",c);    //依次读取字符缓冲区的字符    }getch()、getche()和getchar()函数</span>
<span style="font-size:18px;">(1) getch()和getche()函数  这两个函数都是从键盘上读入一个字符。其调用格式为:   getch();   getche();  两者的区别是:getch()函数不将读入的字符回显在显示屏幕上,而getche() 函数却将读入的字符回显到显示屏幕上。       例1:        #include"stdio.h"       #include"conio.h"       void main()        {             char c, ch;             c=getch();       /*从键盘上读入一个字符不回显送给字符变量c*/             putchar(c);      /*输出该字符*/             ch=getche();     /*从键盘上带回显的读入一个字符送给字符变量ch*/             putchar(ch);        } 利用回显和不回显的特点, 这两个函数经常用于交互输入的过程中完成暂停等功能。        例2:        #include"stdio.h"       #include"conio.h"       void main()        {             char s[20];             printf("Name:");             gets(s);             printf("Press any key to continue...");             getch();    /*等待输入任一键*/        }   (2) getchar()函数  getchar()函数也是从键盘上读入一个字符, 并带回显。它与前面两个函数的区别在于: getchar()函数等待输入直到按回车才结束,    回车前的所有输入字符都会逐个显示在屏幕上。但只有第一个字符作为函数的返回值。      例3:        #include"stdio.h"       #include"conio.h"       void main()        {             char c;             c=getchar();     /*从键盘读入字符直到回车结束*/             putchar(c);      /*显示输入的第一个字符*/             getch();         /*等待按任一健*/        }       例4:       #include"stdio.h"       #include"conio.h"       void main()        {             char c;             while ((c=getchar())!='\n')     /*每个getchar()依次读入一个字符*/            printf("%c",c);      /*按照原样输出*/            getch();         /*等待按任一健*/        }编程中,以防程序运行一闪即失,总是要在最后来一个“getch();” getch()和getche()需要"conio.h" 附:getch      从键盘无回显地读一字符调用格式        #include"stdio.h"           int getch(void);原型在     conio.h说明       getch从键盘直接读一个字符,不回显到屏幕上。返回值     getch返回从键盘所读的字符。可移植性 getch只适用于DOSgetchar    从stdin流中取字符调用格式      #include"conio.h"           int getchar(void);原型在     stdio.h说明       getchar是一个宏,用于返回指定的stdin输入流的下一个字符,     它定义为getc(stdin)。返回值     调用成功时,getchar返回所读的字符,它已被转换为无符号扩展的整形值。在遇到文件结束或出错时,返回EOF。可移植性 getchar适用于UNIX系统,在ANSI C中定义,与Kernighan和Ritchie的定义兼容                                </span>
0 0
原创粉丝点击