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
我想打印一个恰好有 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