• ベストアンサー

printfの書式%.*s

海外のサイトに掲載されているサンプルコード中のprintfの書式がわかりません。 printf("%2d: %.*s\n", i, ovector[2*i+1] - ovector[2*i], str + ovector[2*i]); PCREのサンプルの中に出てくるコードですが、上記の「%.*s」は、どういった意味になりますか? よろしくお願いいたします。 http://stackoverflow.com/questions/1421785/how-can-i-use-pcre-to-get-all-match-groups

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

ピリオドに続く数字は精度を表します。 sに精度を指定した場合、出力する文字数を制限することになります。 たとえば、 printf("%.3s", "abcdefg"); とすると、abcが出力されます。 ピリオドのあとに*を指定した場合、精度を引数で指定することになります。 具体的には、 printf("%.*s", 4, "abcdefg"); とすれば、abcdが出力されることになります。

その他の回答 (1)

回答No.1

少し(認知度が)マイナーな仕様ですが、調べてみると http://www.mm2d.net/c/c-01.shtml http://www.k-cube.co.jp/wakaba/server/format.html の2つのページに記載されている事から、str + ovector[2*i]から始まる文字列を最大ovector[2*i+1] - ovector[2*i]文字出力する指定のようです。

osiete02
質問者

お礼

ありがとうございます。大変参考になりました。

関連するQ&A

専門家に質問してみよう