对scanf函数钻的一些牛角尖

本文详细解析了C语言中scanf函数的不同格式控制符的作用,特别是%d%c、%d%c和%d,%c之间的区别,并通过实例说明了这些格式控制符如何影响数据的读取。

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

壮壮的学习笔记

scanf中%d %c、%d%c和%d,%c有什么区别

简单讲"%d %c"可以以0个或多个空白字符 (空格、tab键、回车等)作为分隔符
如:
输入1 a,读取的是1和a
输入2b,读取的是2和b
输入3<回车><回车>c,读取的是3和c

而"%d%c"会读取一个数和紧挨着这个数的一个字符 包括空白字符),
如:
输入1 a,读取的是1和’ ’(空格)
输入2b,读取的是2和b
输入3.a,读取的是3和.
输入3<回车>c,读取的是3和’\n’

%d,%c其实只是指定的输入格式罢了,想让用户在输入的时候以逗号间隔
输入1 a,只读取1
输入2b,只读取2
输入3.a,只读取3
输入3<回车>c,输入3再按回车就已经被读取了
输入3,a 读取到的是3和a

scanf(“%d “)与scanf(”%d”)的区别? (注意引号里空格位置)

scanf("%d ",&a[i]);
引号中只有两个部分:%d和一个空格

%d表示首先从输入缓冲区中读取空白符并且抛弃,然后读取数字,直到读到非数字字符停止,并且将该字符放回到输入缓冲区中,然后把读到的数值赋值给a[i]。
在这里插入图片描述

空格表示从输入缓冲区中一直读取空白符并且抛弃,直到遇到一个非空白符停止。

“键盘键入:5 3 2回车”时,因为回车也是空白符,不能结束空格的匹配。所以需要额外的输入一个非空白符
在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值