scanf()函数能不能接收回车

本文详细解析了C语言中scanf函数的特性,特别是如何处理空格、Tab和回车等特殊字符,通过实验对比展示了不同类型变量在接收输入时的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@TOC

scanf("%d",&a)、scanf("%s",&a)等不能接受空格、Tab、回车等。对于末位回车符,会把其保存在输入缓冲区,保存在输入缓冲区中的末位回车符能否为下次scanf()所接收。要视scanf()中输入类型决定。仅字符型变量scanf("%c",&a)可以接收回车。

实验对比结果如下:

1.scanf()接收%d类型的数据

在这里插入图片描述
上图中,吸收首次输入后剩余的回车,使用scanf函数,接收%d类型。scanf()在接收%d类型数据时,遇到回车直接认为本次输入结束。因为缓冲区里除了回车已经没有其他内容。所以b的并未改变。

scanf() 接收%c型的数据

在这里插入图片描述
使用scanf("%c",&b)时,同样输入缓冲区中仅剩有一个回车,但此时可以将’\n’赋值给b,并在检测点2下方打印了回车

此时,scanf("%c",&b)的效果同getchar()
在这里插入图片描述

代码.

// An highlighted block
#include "stdio.h"
void main()
{
	char a,b='A',c;
	scanf("%c",&a);
	printf("检测点1:%c\n",a);

	if(a=='Y')
		printf("首次接收正常\n");
	else
		printf("首次接收失败\n");
//	b=getchar();
	scanf("%c",&b);
	printf("检测点2:%c\n",b);

	scanf("%c",&c);
	printf("检测点3:%c\n",c);

	if(c=='Y')
		printf("第二次接收正常\n");
	else
		printf("第二次接收失败\n");
}

注:头一次写,版式和内容还有欠缺,各位见谅!!!有问题或建议欢迎留言评论哈

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值