这可以用 printf 实现吗?

Is this possible with printf?

我知道,对于超大字符串,您可以打印出前几个字符:

printf(".5s\n",string);

对于过小的字符串,您可以用 space:

填充它
printf("% 5s\n",string);

有没有办法同时实现这两个目标?即,如果它很短,则用 0 或 space 填充它,如果它很长,则将其截断?

是的,你可以将它组合成这样:

printf("%5.5s\n", string);

因此,如果您的字符串为 1,则输出为:

    1
//^ 4 Spaces here

如果你的字符串是 123456,输出是:

12345
   //^ 6 doesn't get displayed

另请参阅有关 printf() 的更多信息并作为参考,请参阅此 link:http://www.cplusplus.com/reference/cstdio/printf/