当输出是静态的时,我成功地打印了左对齐的填充列,如下所示:

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

最佳答案

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

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可以返回负错误代码,因此在使用之前检查返回值是一个好主意。

09-04 06:25