从 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);