Printf string with 20 characters 不管字符串长度 C

Printf string with 20 characters regardless of string length C

我想打印一个恰好有 20 个字符的字符串,而不管 str 的长度是更短还是更长。现在我正在使用:

printf("%20s:",r->str); 

如果字符串太长,这不会缩短字符串,但会正确添加填充。如何实现?

您需要 printf 宽度 精度字符串格式修饰符。

您已经熟悉宽度修饰符 %Ns,其中 N 是要使用的最小字段。 precision 修饰符(是的,syntax-similar 到浮点精度修饰符),确定要使用的最大字符数。 %.Ms,其中 M 是要消耗的最大字符数。还有钱的问题,你能同时使用吗?是的,您可以:%N.Ms

#include <stdio.h>

int main()
{
    char str[] = "1234567890";
    printf("%5.5s\n", str);
}

输出

12345

请注意,其中的 one/both 可以通过使用 * 而不是固定宽度来动态设置,并在 printf 参数列表中提供动态长度作为前导参数.下面显示了一个(无可否认的无聊)示例:

#include <stdio.h>

int main()
{
    char str[] = "1234567890";

    for (int i=2; i<=5; ++i)
    {
        for (int j=2; j<=5; ++j)
            printf("%%%d.%%%d : %*.*s\n", i, j, i, j, str);
    }
}

输出

%2.%2 : 12
%2.%3 : 123
%2.%4 : 1234
%2.%5 : 12345
%3.%2 :  12
%3.%3 : 123
%3.%4 : 1234
%3.%5 : 12345
%4.%2 :   12
%4.%3 :  123
%4.%4 : 1234
%4.%5 : 12345
%5.%2 :    12
%5.%3 :   123
%5.%4 :  1234
%5.%5 : 12345