C语言格式修饰符洋解

来源:互联网 发布:js字符串转为json 编辑:程序博客网 时间:2024/06/07 01:45

 格式修饰符:
最小域宽限定符:
百分号和格式代码间的整数称为最小域宽限定符,它保证输出时用空格填充以达到最小域宽。默认为空格,如果想用0来填充,那么在域宽限定符前放一个0。如:
%05d将对不是五位数的输出数字填充0以达到最小域宽。
精度限定符:
如:%10.4f 该数至少10个字符宽,精确到小数点后面4位。
对齐输出:默认时,所有输出均为右对齐。可以通过在百分号后加一个减号来迫使数据向域左边界对齐.如:%-10.2f表示在10个字符域宽内以左对齐方式显示一个小数点后有两位有效数字的浮点数.
*和#修饰符:如果g、G、f、E或e前面有#,就可以确保即使没有小数位也要显示小数点。如果X或x前面有#,那么十六进制数将带0x前缀显示,在o前面加上#符号会使得打印的数字前补0,#不能用于其它任何格式限定符。

最小域宽和精度限定符可以通过变元而不是常数提供给printf().为了实现这一点,我们用*作为占位符。当编译器扫描到格式串时,printf()将*与变元串中的参数按顺序匹配。如:printf("%*.*",10,4,1234.56);  最小域宽是10,精度是4,将要显示的是  1234.56。

scanf:
使用一个扫描集:
如:char str[80];
scanf("%[abc]",str);
表示 扫描集告诉scanf()只读字符a, b, c,直到遇到第一个不在此扫描集中的字符为止。

压缩输入:
如果在域的格式码前加上*,则用户就可以告诉scanf()读这个域,但并不把它赋于任何变量,如:
scanf("%d,%*c%d",&x,&y);
当输入10,10时,逗号将被读过但不赋于任何变量。