%* d是否表示一个或多个整数?在sprintf函数中
答案 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);