当字符串具有变量时使用列填充打印
Printing with column padding when string features variables
当输出是静态的时,我设法打印了左对齐的填充列:
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
可以 return 负错误代码,因此在使用前检查 return 值是个好主意.
当输出是静态的时,我设法打印了左对齐的填充列:
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
可以 return 负错误代码,因此在使用前检查 return 值是个好主意.