关于scanf 加空格或者‘\n‘问题

被学弟学妹问倒,哎呀呀,没玩过,配合他们玩一玩
其实正常来讲是没有人会写\n在scanf里的
正常来说
scanf是用来格式化输入的例如你要输入 1,2,3 你想读到1和2和3
哎呀呀很容易啊 scanf("%d,%d,%d",&a,&b,&c); 这样子1和2和3就会完美存入a,b,c啦
那为啥子不推荐在scanf("")里面写’\n’呢主要是因为,你读整数,小数的时候人家c 会很主动地帮你忽略’\n’空格等制表符啊,人家都那么主动了,你还忍心多此一举,你你你,哎呀呀,(注意:字符的话,制表符也是字符滴想忽略可以用空格 scanf(" %c",&a); 试试看就懂了)

开始正题:
scanf中的制表符有着自己的梦想,他们希望有人能走进他们的生活,但惨的是,对他们来说,遇见即别离(就是有读入,那个制表符就失去了作用仅此)
看代码:(这是个悲伤的故事)

#include <bits/stdc++.h>
int main()
{
	int a,b;
	int dd;
	char c;
	scanf("%d\n%d\n",&a,&b);
	printf("帅哥%d   和美女%d在讨论秋天的第一杯奶茶\n",a,b);
	scanf("  %d\n",&dd);
	printf("%d dd 好羡慕,也想要一杯奶茶呜呜呜\n\n\n",dd);
	printf("所有可以保存的数字都能有他们自己的声音,但....\n");
	printf("制表符,遇见即别离。"); 
	return 0;
 } 

代码运行结果如下:
在这里插入图片描述
看懂了吗(不是剧情)
第一句 scanf("%d\n%d\n",&a,&b);
a读入了66之后, 来到了’\n’时间,他,在等,是这个时候,读入一个数77,他的使命的完成了,没错,他啥事都不干就这么走了!
然后,这个77进入了b,又来换行时间了,等88输入,又结束了使命,唉~
接下来的 scanf(" %d\n",&dd); 这个dd,就抛弃在那找不到人配对的88嘛?不会!输入的数会按顺序一个个读入他会带着88住进他的屋子!(就是存入c),
最后的换行,又来等人了,等到了99,好,结束使命…有人会问,那99同学呢?她啊,没人带她走,最终自己成仙走了…

看懂了吗,说白就是制表符等了个寂寞,所以,除了特殊的字符输入可能要忽略空格用下制表符,就不用让他们在傻傻地等了,好吗?
(本文结束)

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页