精度/最大幅の桁数を値で指定

広告

フォーマット指定子のオプションの1つである精度/最大幅を指定する時に、直接数値を指定する代わりに「*」を記述すると、桁数を値として指定することが出来ます。

例として精度を6桁に設定する場合は次のように記述していました。

printf("[%.6d]¥n", 123);

精度の部分を値で指定するには、精度を指定する位置に「*」を記述し、変換する値を指定する前に精度の桁数を指定します。

printf("[%.*d]¥n", 6, 123);

この2つは同じ結果となり次のように表示されます。

[000123]

この書式を使用する場合には1つの書式指定文字列に対して桁数と変換する値の2つの値を指定することになります。

サンプルプログラム

では簡単なプログラムで確認して見ます。

test7-1.pl

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

printf("[%.6d]¥n", 123);
printf("[%.*d]¥n", 6, 123);

printf("[%s] [%.*s] ¥n", "Hello", 3, "Hello");

上記を「test7-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。

精度/最大幅の桁数を値で指定

( Written by Tatsuo Ikura )