C格式化输入输出
先附上示例源码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
//定义 摄氏、华氏变量
//温度上限、下限、步长
//循环输出目标值
int fahr,celsius; //华氏、摄氏变量
int lower,upper,step;
lower=0;
upper=300;
step=20;
for(fahr=lower; fahr<=upper; fahr=fahr+step)
{
celsius=5*(fahr-32)/9;
printf("%d\t%d\n",fahr,celsius);
}
system("PAUSE");
return 0;
}
默认格式(%d、%f、%s ……)输出是右对齐的,所以输出的结果不是很美观。
我们可以在printf语句的%d参数中指明打印宽度,这样fahr的值占3字符宽,celsius的值占6字符宽,结果也会在打印区域内右对齐。
printf("%3d\t%6d\n",fahr,celsius);
对于float类型的输出:
printf("%3.0f\t%6.1f\n",fahr,celsius); 表明:浮点数fahr至少占3字符宽,且不带小数点和小数部分;celsius至少占6字符宽,且小数点后面有一位数字。
还可以省略宽度与精度,例如,%6f表示待打印的浮点数至少占6字符宽;%.2f指定待打印的浮点数后有两位小数,但宽度没有限制;%f表示仅打印该浮点数。
总结:
%d 按照十进制整形数打印
%f 按照浮点数打印(对于float 和double 类型,printf 函数都用%f进行说明)
%o 八进制打印
%x 十六进制打印
%c 字符
%s 字符串
%% 百分号(%)本身
%6d 按照十进制整形数打印,至少6个字符宽
%6f 按照浮点数打印,至少6个字符宽
%.2f 按照浮点数打印,仅有两位小数
%6.2f 按照浮点数打印,至少6个字符宽,小数点后两位小数