在一些我必须维护的代码中,我看到了格式说明符%*s。谁能告诉我这是什么以及为什么使用它?
%*s
其用法示例如下:
fprintf(outFile, "\n%*s", indent, "");
用于动态指定字段的宽度:
宽度不是在格式字符串中指定的,而是作为必须格式化的参数之前的附加整数值参数。
因此“缩进”指定在参数列表中为其后的字符串分配多少空间。
所以,
printf("%*s", 5, "");
是相同的
printf("%5s", "");
这是在文件中放置一些空格以避免循环的好方法。
不要在没有NULL终止(打包)的缓冲区上使用“%* s”,以为它只会打印“ length”字段。
格式说明符%4s输出的字符串的字段宽度为4,即printf显示的值至少具有4个字符位置。
如果要输出的值是less大于4个字符的位置,值为right justified默认情况下在字段中。
less
right justified
如果值为greater大于4个字符的位置,字段宽度expands容纳适当数量的字符。
greater
expands
要左对齐该值,请使用负整数指定字段宽度。
参考文献:Java™如何编程(早期对象),第十版
*导致fprintf填充输出,直到输出宽度为n个字符为止,其中n是存储在a函数参数中的整数值,该参数正好位于由修改的类型表示的那个参数之前。
printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
例如:printf("%*s", 4, myValue);等于printf("%4s", myValue);.
printf("%*s", 4, myValue);
printf("%4s", myValue);
所有的回答
用于动态指定字段的宽度:
因此“缩进”指定在参数列表中为其后的字符串分配多少空间。
所以,
是相同的
这是在文件中放置一些空格以避免循环的好方法。
不要在没有NULL终止(打包)的缓冲区上使用“%* s”,以为它只会打印“ length”字段。
格式说明符%4s输出的字符串的字段宽度为4,即printf显示的值至少具有4个字符位置。
如果要输出的值是
less
大于4个字符的位置,值为right justified
默认情况下在字段中。如果值为
greater
大于4个字符的位置,字段宽度expands
容纳适当数量的字符。要左对齐该值,请使用负整数指定字段宽度。
参考文献:Java™如何编程(早期对象),第十版
*导致fprintf填充输出,直到输出宽度为n个字符为止,其中n是存储在a函数参数中的整数值,该参数正好位于由修改的类型表示的那个参数之前。
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
例如:
printf("%*s", 4, myValue);
等于printf("%4s", myValue);
.Leave a Reply