当字符串具有变量

时间:2015-09-24 09:06:10

标签: c formatting printf

当输出是静态的时,我设法打印左对齐的填充列,如下所示:

int col = 40;
printf("%-*s", col, "padded column");
printf("after the column\n");

当字符串不是静态但用变量格式化时,我试图做同样的事情,即:

int col = 40;
int var1 = 200;
printf("???", col, var1, " padded column");
printf("after the column\n");

预期输出的位置,例如:

200 padded column                  after padded column

1 个答案:

答案 0 :(得分:1)

您需要分为两部分生成文本:

char paddedColText[100];
snprintf(paddedColText, sizeof paddedColText, "%d padded column", var1);
printf("%-*s", col, paddedColText);

或者,替代方案:

col -= printf("%d", var1); // Returns string length
printf("%-*s", col, " padded column");

但请记住,printf 可以返回负面错误代码,因此在使用前检查返回值是一个好主意。