三种字符读取函数「getch(),getche(),getchar」的区别
浅析三种字符读取函数——getch(),getche(),getchar
1. getchar()
-
头文件:stdio.h
-
功能:从I/O流中读字符
-
原型:int getchar(void);
-
返回值:读取的字符
-
注意:getchar()被调用时,程序就等着用户按键,所有的字符都会保留在键盘缓存区中(回车字符('r')也放在缓存区中,按下回车时候getchar()函数去缓冲区中一个个读取字符,回车也算哦),等待后续getchar调用读取。也就是说,后续的getchar调用是不会等待用户按键,而直接读取缓冲区中的字符
例:
#include\<stdio.h>
#include\<conio.h>
int main()
{
char c;
while ((c=getchar())!='\\n') //每个getchar()依次读入一个字符
printf("%c",c); //按照原样输出
getch(); //等待按任一健
return 0;
}
输入:qwerty按下回车键
输出如下:qwerty press any.....
解释如下:先将这些字符存入缓冲区里面,遇到回车后getchar()读,依次输出qwerty,getchar()读到回车后就循环终止了.....
2. getch()
-
头文件:conio.h
-
功能:从控制台读取一个字符,但不显示在屏幕上
-
原型:int getch(void)
-
返回值:读取的字符/-1
-
注意:
- getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.
- 输入的字符不会回显在屏幕上.
- getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.每摁一次键就调用一次getch(),直到遇回车结束。如果在规定次数前结束,系统里面并没有存入结束符,我们要手动地在他末尾添加一个‘\0’字符
3.getche
-
头文件:conio.h
-
功能:从控制台取字符(带回显)
-
原型:int getche(void);
-
注意:
- getche()和getch()的区别是: getch()函数不将读入的字符回显在显示屏幕上, 而getche()函数却将读入的字符回显到显示屏幕上(getche()读入之后不管按不按回车立即回显)。
#include<stdio.h>
#include<conio.h>
int main()
{
int i,k=0;
char tmp[20];
for ( i=0 ; i<20; i++ )
{
tmp[i] = getch();
tmp[i]=getchar();
if ( tmp[i]=='\r' )
{
tmp [i] = '\0' ;
break ;
}
putchar ( '*' ) ;
}
printf("\n");
while(tmp[k]!='\0')
printf("%c",tmp[k++]);
return 0;
}

浙公网安备 33010602011771号