C语言中关于scanf的使用

#include<stdio.h>main(){inta,b;scanf("%d%d",&a,&b);printf("a=%d,b=%d\n",a,b);}scanf中两... #include<stdio.h>
main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("a = %d,b = %d\n",a,b);
}
scanf中两个%d之间有空格,按照书上说的除格式说明符以外的其他字符都要原样输入,我实际操作了一下,发现12回车34也可以,12Tab34也可以,12和34中间可以有多个回车,空格或者Tab,这我就不懂了,没有按照原样输入为什么还可以,当我改成12,34时,a正确,b变成了随机数了,按理说在缓冲流中系统应该自动忽略逗号了把后面的34赋值给b,希望大神解答一下
展开
 我来答
gao5521036
高粉答主

2019-11-13 · 醉心答题,欢迎关注
知道小有建树答主
回答量:7225
采纳率:83%
帮助的人:573万
展开全部

scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include 。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include 。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

White_MouseYBZ
2019-03-03 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6504万
展开全部
scanf是C/C++的输入库函数,功能十分强大,但输入要求有很多讲究,如果全写出来就是一本不薄的小册子,所以我们只好用到传到功能就去熟悉什么功能。scanf在%d控制下只接收0~9十个符号,遇到这十个之外的符号就认为前面的输入有效而停止,所以scanf("%d%d",&a,&b)在%d%d控制下若输入"123,",那么a得到整数123就结束了,b得到不到任何值,所以b就是随机乱码值了——因为碰到","后被解释为你的输入结束了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
格兰维尔Icy
2019-03-03 · TA获得超过141个赞
知道小有建树答主
回答量:176
采纳率:84%
帮助的人:32.3万
展开全部

你的这个代码:

#include<stdio.h>
main()
{
int a,b;
scanf("%d %d",&a,&b); //接受2个数值
printf("a = %d,b = %d\n",a,b);
}

代表接受2个数值,发现第一个不是数值的字符时截断。也就是说,如果你输入12345空格,那么12345就被识别为第一个数值了,后面直到再出现是数值时才截断,中途不管你输入多少个非字符都不会触发第二个%d

追问
那为什么输入逗号不行?
输入逗号时b是随机数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mafangsan
2019-03-03 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2545万
展开全部
系统不会自动忽略逗号的,只会跳过空格,回车,和tab,如果那样你应该在两个数字直接输入一个逗号。
其实scanf的格式符那里不应该写乱七八糟符合。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
茗人誓言
2019-03-03 · TA获得超过413个赞
知道小有建树答主
回答量:803
采纳率:46%
帮助的人:130万
展开全部
tab 回车 空格 都属于空字符 c优化处理有什么不好吗 这一点不是应该纠结的地方
更多追问追答
追问
逗号为什么不行
追答
逗号是一个字符 和那三个又不一样了 正则表达式中有分类为s匹配字符S匹配非空字符
可以看出他们的差异
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式