1. printf函数的格式字符串
① %-md:左对齐,若m比实际少时,按实际输出,不足右补空格
#include<stdio.h>
int main(void){
int a = 12;
printf("%5d\n", a);
return 0;
}
输出:
② %md :右对齐,若m比实际少时,按实际输出,不足左补空格
与上面的%-md类似
③ %m.ns":输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
例如: "%7.2s" 输入NAME
输出" NA"(五个空格)
#include<stdio.h>
int main(void){
printf("%s\n", "NAME");
printf("%7.2s\n", "NAME");
return 0;
}
④ %m.nf:输出浮点数,m为宽度,n为小数点右边数位(输出包括小数点的m位数字,不足的话左补空格)
e.g. "%3.1f" 输入3852.99
输出3853.0
2. printf函数的格式控制的完整格式:
% - 0 m.n l 或 h 格式字符
下面对组成格式说明的各项加以说明:
① %:表示格式说明的起始符号,不可缺少。
② -: 有-表示左对齐输出,如省略表示右对齐输出。
③ 0: 有0表示指定空位填0,如省略表示指定空位不填。
④ m.n:m指域宽,即对应的输出项在输出设备上所占的字符数,n指精度,用于说明输出的实型数的小数位数,没有指定n时,隐含的精度为n = 6位。
⑤ l 或 h : l对整型指long型,对实型指double型,h用于将整型的格式字符修正为short型。
3. scanf函数的格式控制符
% * m l或h 格式字符
① 格式字符与printf函数中的使用方式相同,以%d,%o,%x,%c,%s,%f,%e,无%u格式、%g格式
② 可以指定输入数据所占列宽,系统自动按它截取所需数据。如:
scanf( "%3d%3d", &a, &b);
输入:123456
系统自动将123赋给a,456赋给b
③ %后的“*” 附加说明符,用来表示跳过它相应的数据。例如:
scanf( "%2d%*3d%2d", &a, &b);
如果输入如下信息:1234567。将“12 ”赋给a,“67 ”赋给b。第二个数据“345”被跳过不赋给任何变量
④ 输入数据时不能规定精度,例如:
scanf("%6.2f", &a);
是不合法的,不能企图输入:123.45而使a的值为123.45