这对你们中的许多人来说可能是一个非常基本的问题,但我无法理解 %.*s 在做什么?
void substring(int i, int j, char *ch)
{
printf("The substring is: %.*s\n", j - i, &ch[i]);
//what is %.*s doing?
}
这对你们中的许多人来说可能是一个非常基本的问题,但我无法理解 %.*s 在做什么?
void substring(int i, int j, char *ch)
{
printf("The substring is: %.*s\n", j - i, &ch[i]);
//what is %.*s doing?
}
从字符串之前的*
参数中获取字符串的长度限制。所以 printf 将输出(至多)j - i
从&ch[i]
to的字符stdout
。如果字符串较短,则将打印整个字符串,但不会填充空白。
这是一个很好的参考printf
:http ://en.cppreference.com/w/c/io/fprintf 。*
这就是它所说的:
.
后跟整数或*
指定转换的精度。在使用 when 的情况下*
,精度由 type 的附加参数指定int
。如果此参数的值为负,则将其忽略。有关精度的确切影响,请参见下表。
对于s
,它说:
精度指定要写入的最大字节数。
因此,在您的情况下,它最多打印j-i
字符。