これは多くの人にとって非常に基本的な質問かもしれませんが、%。* 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]
stdout
http://en.cppreference.com/w/c/io/fprintfの良いリファレンスprintf
です。*
そして、これはそれが言うことです:
.
その後に整数または*
変換の精度を指定します。を使用する場合*
、精度は type の追加引数によって指定されますint
。この引数の値が負の場合、無視されます。精度の正確な影響については、以下の表を参照してください。
そしてs
、それは言います:
Precision は、書き込まれる最大バイト数を指定します。
したがって、あなたの場合、最大j-i
文字数を出力します。