1

これは多くの人にとって非常に基本的な質問かもしれませんが、%。* sが何をしているのか理解できませんか?

void substring(int i, int j, char *ch) 
{
      printf("The substring is: %.*s\n", j - i, &ch[i]); 
      //what is %.*s doing?
}
4

2 に答える 2

6

*、文字列の前の引数から文字列の長さ制限を取得しています。したがって、printf は (最大で) から までの文字を出力しj - iます。文字列が短い場合、文字列全体が出力されますが、空白は埋め込まれません。&ch[i]stdout

于 2013-03-12T17:50:01.690 に答える
4

http://en.cppreference.com/w/c/io/fprintfの良いリファレンスprintfです。*

そして、これはそれが言うことです:

.その後に整数または*変換の精度を指定します。を使用する場合*、精度は type の追加引数によって指定されますint。この引数の値が負の場合、無視されます。精度の正確な影響については、以下の表を参照してください。

そしてs、それは言います:

Precision は、書き込まれる最大バイト数を指定します。

したがって、あなたの場合、最大j-i文字数を出力します。


* 実際、ほぼすべての標準 C および C++ ライブラリの非常に優れたリファレンスです。これを使って!

于 2013-03-12T17:50:05.757 に答える