三种字符读取函数「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;
}
posted @ 2022-07-31 11:55  Lynx_peng  阅读(754)  评论(0)    收藏  举报