从 C 中的字符串打印特定字符
Printing specific character from a string in C
我正在处理一个字符串的前缀,例如:com
应该给我 c
co
com
。
我知道在其中打印一个字符是 printf("%.5s",string)
来打印前五个值。我想在一个循环中而不是 5 中执行此操作,我如何用 i
替换它,这是一个递增的值,类似于 printf("%.is",string)
。我怎样才能得到这个?
这是实现您想要的最简单的方法。
printf("%.*s\n", i, string);
如果你想生成格式字符串,你也可以这样做
char format[100]; /* the size should be estimated by you */
snprintf(format, sizeof(format), "%%.%ds", i);
printf(format, string)
检查 snprintf()
return 值以确保字符串未被截断,如果您为格式字符串选择了合理的大小,则不太可能出现这种情况,但无论如何您都应该检查。
以上,格式说明符表示
- 文字
"%"
- 然后一个
"."
- 然后整数
"%d"
- 然后字母
"s"
因此生成的字符串将是您需要传递给 printf()
的格式字符串。
试试这个:
char s[] = "com";
for(size_t i = 1; i <= strlen(s); i++)
{
for(int j = 0; j < i; j++)
printf("%c", s[j]);
printf(" ");
}
在printf
格式说明符中,所有字段宽度(点之前)和精度(点之后)都可以用星号给出*
。对于每个星号,打印对象之前必须有一个额外的 int
参数。
所以,对于你的问题:
printf("%.*s", i, string);
注意附加参数必须是一个int
,所以如果你有其他整数类型,你应该转换它:
size_t len = strlen(len);
if (len > 2) printf("%.*s", (int) (len - 2), string);
我正在处理一个字符串的前缀,例如:com
应该给我 c
co
com
。
我知道在其中打印一个字符是 printf("%.5s",string)
来打印前五个值。我想在一个循环中而不是 5 中执行此操作,我如何用 i
替换它,这是一个递增的值,类似于 printf("%.is",string)
。我怎样才能得到这个?
这是实现您想要的最简单的方法。
printf("%.*s\n", i, string);
如果你想生成格式字符串,你也可以这样做
char format[100]; /* the size should be estimated by you */
snprintf(format, sizeof(format), "%%.%ds", i);
printf(format, string)
检查 snprintf()
return 值以确保字符串未被截断,如果您为格式字符串选择了合理的大小,则不太可能出现这种情况,但无论如何您都应该检查。
以上,格式说明符表示
- 文字
"%"
- 然后一个
"."
- 然后整数
"%d"
- 然后字母
"s"
因此生成的字符串将是您需要传递给 printf()
的格式字符串。
试试这个:
char s[] = "com";
for(size_t i = 1; i <= strlen(s); i++)
{
for(int j = 0; j < i; j++)
printf("%c", s[j]);
printf(" ");
}
在printf
格式说明符中,所有字段宽度(点之前)和精度(点之后)都可以用星号给出*
。对于每个星号,打印对象之前必须有一个额外的 int
参数。
所以,对于你的问题:
printf("%.*s", i, string);
注意附加参数必须是一个int
,所以如果你有其他整数类型,你应该转换它:
size_t len = strlen(len);
if (len > 2) printf("%.*s", (int) (len - 2), string);