除了用scanf读取字符外,你还会用getchar吗,getche呢?那getch呢

目录

1、getchar()

2、getche()

3、getch()


除了用scanf读取字符外,你还会用getchar吗,getche呢?那getch呢_第1张图片

1、getchar()

C语言中,在读取一个字符的时候,除了可以用scanf("%d",&a);语句之外,其实还有其他方法。

char a;

a=getchar();

 a=getchar();与scanf("%d",&a);的作用是完全一样的。

例如以下代码:

#include
#include
int main()
{
	char a;
	a = getchar();
	printf("你刚才输出的数字是%c\n", a);
	system("pause");

	return 0;
}

当我们输入一个字符“a”然后按回车之后,效果如图所示:

除了用scanf读取字符外,你还会用getchar吗,getche呢?那getch呢_第2张图片

 没错,使用scanf()和getchar()都可以读取一个字符,但是当用户输入一个字符之后,程序不会继续往下执行,直到用户按下“Enter”键,程序才会认为刚才的输入已经结束,然后继续执行余下的内容。有些情况这一点显得不是很好。

这是为什么呢?

其实用scanf()和getchar()来读取一个字符时,首先是将输入的字符接受到缓存区,缓冲区是一块为用户的输入预留的内存区域,缓冲区不会自动释放,直到用户按下回车键,缓冲区内的字符才会被释放,让我们的程序收到。这意味着两件事情:第一,只要用户还没按下回车键,用户就可以用“backspace”键或者“delete”键来纠正错误的字符输入;第二,如果用户没有按下回车键,输入的字符会一直逗留在缓冲区中,不会被我们所写的程序接收到,直到用户按下回车键。

有时这样的缓冲机制并不能满足我们的需求,假如要制作一个“贪吃蛇”或者“走迷宫”的游戏,你可能并不希望用户在按下方向键之后还要按下回车键来执行程序。如果是这样的话,那么用户的体验就太差了。我们希望在按下一个键之后,计算机就能马上做出反应,而不再需要按下多余的“enter”键。

接下来有请我们今天的主角一

2、getche()

请看以下代码:

#include
#include
int main()
{
	char a;
	a = getche();
	printf("你刚才输出的数字是%c\n", a);
	system("pause");

	return 0;
}

同学们可以自行试下代码,你就会惊奇的发现,当你输入一个字符后,还没按下“enter”键,计算机就立马给出了反应。

3、getch()

除了用scanf读取字符外,你还会用getchar吗,getche呢?那getch呢_第3张图片

同学们有时候看见这两个“b”是不是感觉很奇怪呢,有没有办法让我们输入的字符b不显示在窗口上呢?答案是当然有啦

有请今天的主角二——getch

请看代码:

#include
#include
int main()
{
	char a;
	a = getch();
	printf("你刚才输出的数字是%c\n", a);
	system("pause");

	return 0;
}

除了用scanf读取字符外,你还会用getchar吗,getche呢?那getch呢_第4张图片

你们看,我们输入的字符是不是不见了,是不是很神奇!!

本章小结:

getchar()读取一个字符,输入后等待用户按“enter”键结束(带回显)

getche()读取一个字符,输入后立即获取字符,不用按“enter”键结束(带回显)

getch()读取一个字符,输入后立即获取字符,不用按“enter”键结束(不带回显)

 以上内容参考啊哈C语言,谢谢大家支持

你可能感兴趣的:(c语言,开发语言,学习)