あるコードスニペットを取得しました
printf("%.*s\n")
とはどういう%.*s
意味ですか?
アスタリスク ( *
) を使用して、幅指定子/精度をprintf()
フォーマット文字列にハードコーディングするのではなく、に渡すことができます。
void f(const char *str, int str_len)
{
printf("%.*s\n", str_len, str);
}
上記のコードは正しいとは思いませんが、(この説明によるとprintf()
).*
手段は
幅はフォーマット文字列では指定されませんが、フォーマットする必要がある引数の前に追加の整数値引数として指定されます。
つまり、引数として通過可能な幅を持つ文字列です。
参照: http://www.cplusplus.com/reference/clibrary/cstdio/printf/
.*
精度はフォーマット文字列では指定されませんが、フォーマットする必要がある引数の前に追加の整数値引数として指定されます。
s
文字列