输入数据的回车换行问题

初学者在使用scanf、getchar等一些输入函数时,经常会产生一些错误。其中很多错误与回车键有关。今天我们就来解决这一问题。
问题产生:

在这里插入int main()
{
    
    
	char ch1, ch2;
	printf("请输入第一个字符:");
	ch1 = getchar();
	printf("请输入第二个字符:");
	ch2 = getchar();
	printf("\n ch1=%c,ch2=%c\n", ch1, ch2);
	return 0;
}代码片

代码运行,输入d,结果如下:
在这里插入图片描述
当程序执行到第一个getchar时,计算机会停下来等待我们输入第一个字符。此时我们输入d,则第一个getchar()读取的是字符‘d’。但是第二个getchar()并没有停下来等待我们输入第二个字符。程序运行结束。
出现这一情况的原因是:
我们输入d 时,实际送入缓冲区的是两个字符:‘d’,和‘\n’(换行符)。回车总是被转化为换行符再送入缓冲区。因此,第二个getchar()读取时缓冲区里还有一个字符‘\n’未被读取。所以程序不会停下来等待我们输入,而是直接读取‘\n’赋值给ch2。
在这里插入图片描述
红色框内是回车换行的表示结果。

猜你喜欢

转载自blog.csdn.net/weixin_50941322/article/details/111321457