#define SIZE 9
int number=5;
char letters[SIZE]; /* this wont be null-terminated */
...
char fmt_string[20];
sprintf(fmt_string, "%%d %%%ds", SIZE);
/* fmt_string = "%d %9d"... or it should be */
printf(fmt_string, number, letters);
有一个更好的方法吗?
不需要构造特殊的格式字符串。printf
允许您使用参数(位于值之前)指定精度(如果您使用.*
作为格式标记中的精度。
例如:
printf ("%d %.*s", number, SIZE, letters);
注意:宽度(最小字段宽度)和精度(给出要打印的最大字符数)之间存在区别。%*s
指定宽度,%.s
指定精度。 (你也可以使用%*.*
但你需要两个参数,一个用于宽度,一个用于精度)
另请参见 printf 手册页(man 3 printf http://man7.org/linux/man-pages/man3/printf.3.htmlLinux 下),特别是有关字段宽度和精度的部分:
除了十进制数字字符串之外,还可以写“*”或“*m$”(对于某些情况)
十进制整数 m) 指定精度在下一个中给出
参数,或分别在第 m 个参数中,该参数必须为 int 类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)