scanf
- % [flag] type
一、[flag](格式部分)
flag | 含义 |
---|---|
* | 跳过 |
数字 | 最大字符数 |
hh | char |
h | short |
l | long,long |
ll | long long |
L | long double |
1、 跳过(*)
scanf("%*d%d%d",&a,&b,&c);
printf("%d+%d\n",a,b);
printf("%d+%d+%d\n",a,b,c);
在第一行输入语句,a对应的%d中间加上*。由对应的输出可以知道,a的地址中存入数字是22,b的地址中存入是33。c的地址中存入是系统分配的数值。
其他就不做一一解释了,我们平时做的练习足够一眼看出其用法。也有的举例与printf放在一起。
printf
- % [ flags ] [width] [.prec] [hIL] type
一、[flag](格式部分)
flag | 含义 |
---|---|
- | 左对齐 |
+ | 在前面放+或- |
(space) | 正数留空 |
0 | 0填充 |
1、 左对齐(-)
printf("%9d\n",123);
printf("%-9d\n",123);
运行结果如下图。第一行和第二行输出都有九个空格,但是第二行是靠左对齐。
2、 在前面放+或-(+)
printf("%+9d\n",123);///强制输出加号
printf("%-+9d\n",123);
3、 正数留空(space)
这个就是字面意思。
printf("%9d\n",123);
4、 0填充(0)
printf("%09d\n",123);///0用于填充
printf("%-9d\n",123);
二、[width]或[.prec](精度部分)
width或prec | 含义 |
---|---|
number | 最小字符数 |
* | 下一个参数是字符数 |
.number | 小数点后的位数 |
.* | 下一个参数是小数点后的位数 |
1、 number / .number
printf("%9.2f\n",123.0);
输出语句中"9"表示整个输出占据九个位置,".2"表示小数点后保留两位数字。
2、 *或 . *
printf("%*d\n",6,123);
printf("%.*f\n",4,123.0);
第一行语句:‘6’对应于’*’,表示输出整体占据6个位置。
第二行语句:‘4’对应于’.’,表示小数点后的有4个位置。
三、[hlL](修饰部分)
类型修饰 | 含义 |
---|---|
hh | 单个字节 |
h | short |
l | long |
ll | long long |
L | long double |
1、 hh
printf("%hhd \n",12345);
这里我们只讲"hh"部分,因为其他几个在初学时都已经熟练的掌握运用。
输出语句的123456转化为16进制是0x3039,只取39再转化为10进制是57。
四、type(类型)
直接跳转到我之前写的一篇文章,包含了几乎全部的类型,C语言输入输出那些事。