145

あるコードスニペットを取得しました

printf("%.*s\n")

とはどういう%.*s意味ですか?

4

4 に答える 4

147

アスタリスク ( *) を使用して、幅指定子/精度をprintf()フォーマット文字列にハードコーディングするのではなく、に渡すことができます。

void f(const char *str, int str_len)
{
  printf("%.*s\n", str_len, str);
}
于 2011-10-26T05:59:50.743 に答える
12

上記のコードは正しいとは思いませんが、(この説明によるとprintf()).*手段は

幅はフォーマット文字列では指定されませんが、フォーマットする必要がある引数の前に追加の整数値引数として指定されます。

つまり、引数として通過可能な幅を持つ文字列です。

于 2011-10-26T06:00:06.143 に答える
10

参照: http://www.cplusplus.com/reference/clibrary/cstdio/printf/

.* 精度はフォーマット文字列では指定されませんが、フォーマットする必要がある引数の前に追加の整数値引数として指定されます。

s 文字列

于 2011-10-26T06:00:08.027 に答える