%* d是指一个或多个整数吗?

时间:2011-04-06 03:14:44

标签: c

%* d是否表示一个或多个整数?在sprintf函数中

4 个答案:

答案 0 :(得分:5)

它用于处理打印的数值的最小宽度,具体表示宽度未在格式字符串中指定,而是作为必须格式化的参数前面的附加整数值参数。换句话说,如果你想使用存储在变量中的宽度,你可以这样做:

int width = /* something */;
printf("%*d", width, value);
编辑:哎呀! sprintf的正确语法是:

sprintf(buffer, "%*d", width, value);

答案 1 :(得分:3)

对于sprintf,它意味着你将传递两个整数,一个指定字段宽度,另一个指定你要转换的值。

IOW:

sprintf(buffer, "%5d", value);

基本上与:

相同
sprintf(buffer, "%*d", 5, value);

就像在格式字符串中将值作为文字宽度传递一样,如果需要,可以指定宽度和精度,如下所示:

sprintf(buffer, "%*.*d", 5, 2, value);

值得注意的是,对于scanf和公司,格式字符串中的“*”具有完全不同的含义(转换某些输入,但将结果分配给任何东西)。

答案 2 :(得分:1)

类似于%2d,即“打印2长度整数”,但长度被指定为参数(不确定顺序)。 Reference

  

宽度未在格式字符串中指定,而是作为必须格式化的参数之前的附加整数值参数。

答案 3 :(得分:1)

*表示在这种情况下整数的宽度或间距。 *是一个占位符,允许您将宽度指定为要格式化的参数之前的参数(在本例中为整数)

printf("The integer will be printed 10 spaces to the right: %*d", 10, 50);