首页 > 解决方案 > 如何在printf中填充两个字符串?

问题描述

例如:

printf("%-10s%s\n", s1, s2);

我可以得到:

s1         s2

当较早的字符串可能具有不同的长度时,我希望将 s3 放在固定列

printf("%s%s%s\n", s1, s2, s3); // how to padding 10?

s1s2         s3
s11s22       s3
s111s222     s3

标签: c

解决方案


您将不得不使用一些逻辑来计算要打印多少空间,例如:

int s3_column = 15;   // example position
int length = printf("[%s%s]", s1, s2);
if ( length >= 0 && length < s3_column )
    printf("%*s", (int)(s3_column - length), "");
printf("%s\n", s3);

正如评论中所建议的,另一种可能的方法是[s1s2]在自己的缓冲区中准备部件,但这需要额外的内存并引发与内存分配相关的所有潜在问题,并且最终将成为比计算空间更复杂的代码,如我例子。


推荐阅读