printf和scanf的格式转换符

 

1、转换说明符 

转换说明 输出 转换说明 输出
%a 浮点数、十六进制数字和p-记数法 %i 有符号十进制整数(与%d相同)
%A 浮点数、十六进制数字和p-记数法 %o 无符号八进制整数
%c 一个字符 %p 指针
%d 有符号十进制整数 %s 字符串
%e 浮点数、e-记数法 %u 无符号十进制整数
%E 浮点数、E-记数法 %x 使用十六进制数字0f的无符号十六进制整数
%f 浮点数、十进制记数法 %X 使用十六进制数字0F的无符号十六进制整数
%g 根据数值不同自动选择%f或%e %% 打印一个百分号
%G 根据数值不同自动选择%f或%E    

2、修饰符 

修饰符 意义
标志 五种标志(+、-、空格、#、0)。示例: "%-10d"
digit(s) 字段宽度最小值。如果该字段不能容纳要打印的数或者字符串,系统会使用更宽的字段。
示例: "%4d"
.digit(s) 精度。对于%e、%E、%f转换,是将要在小数点的右边打印的数字的位数;对于%s转换,是将要打印的字符的最大数目;对于整数转换,是将要打印的数字的最小位数,如果必要,要使用前导零来达到这个位数。
h 和整数转换说明符一起使用,表示一个short int或unsigned short int类型数值。
hh 和整数转换说明符一起使用,表示一个signed char或unsigned char类型数值。
j 和整数转换说明符一起使用,表示一个intmax_t或uintmax_t值
l 和整数转换说明符一起使用,表示一个long int或unsigned long int类型数值
ll 和整数转换说明符一起使用,表示一个long long int或unsigned long long int类型数值
L 和浮点数转换说明符一起使用,表示一个long double值
t 和整数转换说明符一起使用,表示一个ptrdiff_t值
z 和整数转换说明符一起使用,表示一个size_t值
* 滞后赋值

3、标志

标志 意义
- 左对齐
+ 有符号的值若为正,则显示带加号的符号;若为负,则带减号的符号
空格 有符号的值若为正,则显示时带前导空格;若为负,则带减号的符号
# 对于%o转换,则以0开始;对于%x和%X,则以0x或0X开始
0 对于所有的数字格式,用前导零而不是用空格填充字段宽度。

4、滞后赋值示例

printf中的 *:

int width, number = 256;
printf("input width: ");
scanf("%d", &width);
printf("The number is: %0*d\n", width, number);
input width: 8
The number is: 00000256

scanf中的 *:

int n;
printf("input three numbers: ");
scanf("%*d %*d %d", &n);
printf("The n is: %d\n", n);
input three numbers: 2005 2006 2007
The n is: 2007

 

你可能感兴趣的:(Unix环境编程)