第三章:
scanf函数的各种用法
在详细的过一遍第三讲之后,发现了scanf函数的各种用法
下面对scanf函数进行个人总结
真的在细究每一个scnaf函数之后,在我看来scanf函数是一个格式非常严格,甚至可以说是呆板的函数,我个人觉得scanf函数还有点蠢说真的。比如下面常见形式:
scanf("%d%d%d",&a,&b,&c);
scanf("%d %d %d",&a,&b,&c);
scanf("%d,%d,%d",&a,&b,&c);
这三种都是很常见的,但是对于键盘的输入形式却有着严格的规定:
先看前两种,前面是不可以加逗号的,只能用空格进行隔开输入,而且我还发现一个有意思的事情,第一种不能用回车来输入,可能是有缓冲区吧,但是第二个也可以用回车来实现输入,
第三种就是非常的呆板,只能严格按照有逗号的形式来输入数据
scanf("%3d",&x);//意味着只能取出来三个
如果输入的是12345,最后得到的结果只能是123,这需要和printf函数做出区别。
对于printf函数,需要注意
%X,%x分别表示16进制的大小写
带有%8l,表示以long形式打印,而且左对齐八位,不够补空格
%o:八进制
%e:科学计数法
%#:在前面带可选标记,如果是%#o这样前面带0,%#x,这样16进制前面带0x真的非常细啊
对double类型:scanf用:%lf
对float类型,scanf用:%f
对double或者float,printf用:%f或者%lf都可以
由此可见,scanf函数其实小细节真的很多,个人感觉真的很傻逼
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
printf("x+y+z=%d\n", x + y + z);
return 0;
如果是1,1,1这样输入加回车,就错了,因为不能用逗号的
char c1, c2, c3;
scanf("%c%c%c", &c1, &c2, &c3);
printf("%c %c %c", c1, c2, c3);
return 0;
如果是输入a b c,是得不到a b c的,因为还有缓冲区\n,其实c1打印的是\n,然后才有a b。
要想正常打印,得
scanf(“%c %c %c”, &c1, &c2, &c3);有空格才行。
你看空格好像可以占据换行符以及空格,可以看见scanf函数要是想要细考,真的会有很多小知识点,我个人感觉真的非常的反人性,好恶心,设计的一点都不合理。