C语言字符函数的输入特殊用法——清空字符缓冲区

输入函数

getchar()

这个函数再读取的时候会返回一个数的ASCII值的int类型的值,也就意味着我们再输入的时候回车也是可以读取的 空格也是可以读取的。

getchar()的特殊用途

清空字符缓冲区,当我们在使用scanf函数输入字符的时候,在确认的时候,会按下回车键,但是如果再次输入的时候,因为回车在字符缓冲区,打印的时候会优先读取字符缓冲区的字符,而不是本次输入的字符,因此打印出来的是回车符。

演示:

代码如下

#include
int main()
{
	char a = 0;
	scanf("%c", &a);
	printf("第一次打印是%c\n", a);
	scanf("%c", &a);
	printf("第二次打印是%c\n", a);
	return 0;
}

理想的结果:

输入两次不同的数字,打印两个不同的结果。如:

2

第一次打印是2

3

第二次打印是3

实际的结果

C语言字符函数的输入特殊用法——清空字符缓冲区_第1张图片

 我们可以看到甚至没有,要求第二个数的输入就直接完成了打印。

原因:

在输入第一个之后我们按了回车,也就意味着我们输入了2【回车】我们打印了2,【回车】留在了字符缓冲区,下一个scanf在输入的时候直接优先从字符缓冲区里读取了【回车】进行了打印。

解决办法:

在第一次打印后,使用getchar函数将字符缓冲区的多余字符读取出来,清空字符缓冲区。

代码示例:

#include
int main()
{
	char a = 0;
	scanf("%c", &a);
	printf("第一次打印是%c\n", a);
	getchar();
	scanf("%c", &a);
	printf("第二次打印是%c\n", a);
	return 0;
}

结果

C语言字符函数的输入特殊用法——清空字符缓冲区_第2张图片

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