这可能与printf有关吗?

use*_*672 4 c printf libc

据我所知,使用超大字符串,您可以打印出前几个字符:

printf(".5s\n",string);
Run Code Online (Sandbox Code Playgroud)

并且使用小尺寸字符串,您可以用空格填充它:

printf("% 5s\n",string);
Run Code Online (Sandbox Code Playgroud)

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

Riz*_*123 11

是的,你可以把它结合到这个:

printf("%5.5s\n", string);
Run Code Online (Sandbox Code Playgroud)

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

    1
//^ 4 Spaces here
Run Code Online (Sandbox Code Playgroud)

如果您的字符串是123456,则输出为:

12345
   //^ 6 doesn't get displayed
Run Code Online (Sandbox Code Playgroud)

有关更多信息printf()和参考,请参阅此链接:http://www.cplusplus.com/reference/cstdio/printf/