关于c语言中的getch(),getchar() getche()函数肯定十分困扰大家,今天将他们整理和大家一起分享
getchar()
头文件:stdio.h
功 能:从I/O流中读字符
原 型:int getchar(void);
注意:getchar()被调用时,程序就等着用户按键,所有的字符都会保留在键盘缓存区中(回车字符也放在缓存区中,按下回车时候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()读到回车后就循环终止了.....
getch()
函数名:getch():
头文件:conio.h
功 能:从控制台读取一个字符,但不显示在屏幕上
原 型:int getch(void)
返回值:读取的字符
注意:
getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.
输入的字符不会回显在屏幕上
.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.每摁一次键 就调用一次getch(),直到遇回车结束。如果在规定次数前结束,系统里面 并
没有存入结束符
,我们要手动地在他末尾添加一个‘\0’字符
getche
头文件:conio.h
功 能:从控制台取字符(带回显)
用 法:int getche(void);
(1) getch()和getche()函数
这两个函数都是从键盘上读入一个字符。其调用格式为:
getch();
getche();
两者的区别是: 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(); //关键点1 //
tmp[i]=getchar();
//printf ( "%d=[%c]\n",i,tmp [i] );
if ( tmp[i]=='\r' )
{
tmp [i] = '\0' ; //关键点2
break ;
}
putchar ( '*' ) ;
}
printf("\n");
while(tmp[k]!='\0')
printf("%c",tmp[k++]);
return 0;
}