ADP
Programming Language ADP

English

Sourceforge.net

SourceForge.JP

Loading

sprintf (sprintf関数の呼び出し)

形式
 sprintf( $arg, ... , $fmt, $result)
引数
  • $arg: フォーマット文字列への引数(可変)
  • $fmt: フォーマット文字列
  • $result: 結果
完了時の動作
  • 正常時:次の述語を実行に移ります。
  • 異常時(フォーマットエラー):バックトラックします。
バックトラック時の動作
  • 常にバックトラックします。前の述語にバックトラックします。
説明
$fmtをフォーマット文字列とし、$argを引数としてC言語のsprintf関数を呼び出します。結果を$resultに格納します。

以下の書式指定文字をサポートしています(xとoはVer0.7からのサポートです)。
  • d: 整数(10進数で出力)
  • x: 整数(16進数で出力)
  • o: 整数( 8進数で出力)
  • f: 実数
  • s: 文字
  • ,: 3桁区切り整数(独自の拡張)

書式指定文字は、%sのように指定します。またC言語の書式指定文字列と同様に%40sや%5.2fなどのようにサイズも指定できます。
※Ver 0.82からはサイズ指定に * が使用できます。%*.*sのように指定できます。

コード例 (lib/sprintf.p)
,sprintf("文字列", 10, 3.14159265, 2560000, "%s::%03d / %5.2f / %,").prt;

※%s::%03dで、s::とコロンが2回出てきますが、Ver0.82以降のADPのsprintfの独自仕様で2つ必要になります。

実行例
D:\sample\lib>adp sprintf.p
文字列:010 /  3.14 / 2,560,000

※引数の順番がVer 0.82から変わりました。0.81以前では、以下のとおり$fmtが最初になります。
 sprintf( $fmt, $arg, ... , $result)


フォーマット文字列内での連想配列のキーアクセス
ADP 0.82以降では、sprintfに連想配列を渡した場合、フォーマット文字列に連想配列でのキーアクセスができるようになります。
書式指定文字の後に、例えば %s:key1; のように、
:キー名;
とコロンで続けてキー名を指定します(セミコロン;でキー名を終了させます)。

コード例 (lib/sprintf2.p)
_global({ :key1=>10, :key2=>'test', :key3=>10.5}, 'test');
global('test').sprintf("%d:key1; %s:key2; %f:key3;").prtn;

実行例
D:\sample\lib>adp sprintf2.p
10 test 10.500000



Powered by ADP.