C语言的格式化输入与输出
输入
- scanf()格式字符:
- %c,输入一个字符(包括空白字符)
- %s,输入字符串(碰到空白字符停止)
- %d,输入十进制int型数
- %f、%e,输入float型数
- %u,输入无符号int型数
- scanf()格式修饰符
- m:输入数据的位宽
eg:%*(m)d 代表跳过m个字符; %(m) 代表自宽,即读取x个字符
#include<stdio.h> int main() { int a,b; scanf("%*c%2d%*2d%3d",&a,&b); //%*C表示忽略一个字符 printf("a=%d,b=%d\n",a,b); return 0; }
- l:%ld,%lu,表示输入long型;%lf,%le,表示输入double型
- L:%Lf,%Le,表示输入long double型
- h:%hd,表示输入short型
- ll,%lld,表示输入long long型
输出
- %d,%ld,%lld,%hd分表表示输出int,long,long long,short型
- %u,%lu,%llu,%hu分表表示输出无符号int,long,long long,short型
- %o,表示以八进制无符号整型输出,在百分号前加#可输出前缀
- %0x,表示以十六进制无符号整型输出,在百分号前加#可输出前缀
- %f,表示以小数形式(6位小数)输出float,double型
- %e,表示以标准指数形式输出float,double型
#include<stdio.h> int main() { float a=1234.144; float b=0.000124414; float c=-23434.1; printf("a=%e\nb=%e\nc=%e",a,b,c); return 0; }
控制输出的左右对齐与位宽
- 输出整数:eg:%12d,即每一位输出的都有12位,且向右对齐,位数不够向前补空格。%-12d,即每一位输出的都有12位,且向左对齐,位数不够向后补空格。
- 输出小数:eg:%7.2f,其中7指的是最后输出总的占位符为7位,小数点也占一位,右对齐;其中2指的是保留最后的2位小数(遵循四舍五入原则)
#include<stdio.h> int main() { int a=123; double b=123.3535; printf("a=%6d\na=%-6d\n",a,a); printf("b=%12.1f\nb=%-12.1f",b,b); return 0; }