プロが教えるわが家の防犯対策術!

海外のサイトに掲載されているサンプルコード中の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-c …

A 回答 (2件)

ピリオドに続く数字は精度を表します。


sに精度を指定した場合、出力する文字数を制限することになります。
たとえば、

printf("%.3s", "abcdefg");

とすると、abcが出力されます。

ピリオドのあとに*を指定した場合、精度を引数で指定することになります。
具体的には、

printf("%.*s", 4, "abcdefg");

とすれば、abcdが出力されることになります。
    • good
    • 2

少し(認知度が)マイナーな仕様ですが、調べてみると


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]文字出力する指定のようです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/06/13 21:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています