fprintf - 式を書式指定された文字列としてファイルやパイプに出力
sprintf - 式を書式指定された文字列として文字列に出力
nprintf - 式を書式指定された文字列として変数に出力
printf - 式を書式指定された文字列としてデフォルトストリームに出力
使い方
fprintf(file, fmt, x1, ..., xn);
sprintf(fmt, x1, ..., xn);
nprintf(fmt, x1, ..., xn);
printf(fmt, x1, ..., xn);
パラメータ
file - ファイル記述子あるいはファイル名
fmt - 出力書式の指定
x1, ..., xn - 書式指定される式
|
説明
|
|
•
|
fprintf 関数は同じ名前の C 標準ライブラリ関数を基礎としています。fmt 文字列に記された書式指定を使って式を特定のファイルに書き込みます。
|
•
|
sprintf 関数は同じ名前の C 標準ライブラリー関数を基礎としています。fmt 文字列に記された書式指定を使って式を Maple 文字列に書き込み、これを返します。
|
•
|
nprintf 関数は sprintf と同じですが、文字列ではなく Maple 記号を返します。
|
•
|
printf 関数は同じ名前の C 標準ライブラリー関数を基礎としています。 fmt 文字列に記された書式指定を使って式を表示します。
|
•
|
printf(...) の呼び出しは、 fprintf(default,...) と同じ意味です。
|
•
|
fprintf 関数は書いた文字数を返します。
|
•
|
フォーマット文字列 fmt は Maple 記号か文字列で、書式指定の並びで、他の文字で仕切られている場合もあります。それぞれの書式指定は以下のような形式です。
|
%[flags][width][.precision][modifiers]code
•
|
% 記号で書式指定を開始します。以下のフラグのいくつかが % 記号に続きます。
|
フラグ
|
符号付きの数値は適切な正または負の符号 (+ または -) が頭につきます。
|
|
符号付きの数値は、負値では負の符号 (-) が、非負値では空白を頭に付けます。
|
|
出力は左側 (負号と最初の桁の間) がゼロで埋められます。もし - が指定されれば、0は無視されます。
|
•
|
オプションの幅 (width) はこのフィールドに出力される最小の文字数を指定します。出力される値がより少ない文字数の時には左(- が指定されたときには右)を空白で埋めます。
|
•
|
オプションの精度 (precision) は浮動小数点書式では小数点以下に現われる桁数を、文字列書式では最大フィールド幅を指定します。
|
•
|
幅も精度も * として指定することができます。この場合の値は引数リストからとられます。幅と精度の引き数はその順で、出力の引数の前に現われます。負の幅を引数がとった場合には、- flag をとった場合と同じです。
|
モディファイアー
|
オプションのモディファイアー (modifiers) は出力する値の型を指定するのに使われます。
|
|
文字 "l" と "L" は C の printf 関数との整合性のためにサポートされており、"longint" あるいは "long long" が書式指定されていることを指示しています。 Maple では、これらのフラグはなんの影響もありません。
|
|
これらのフラグの1つは数値書式、つまり d, o, x, e, f, g より先について、複素数値が書式化されていることを明示します。複素数の実数部と虚数部はそれぞれ "z" や "Z" を無視した書式指定を使って出力されます。"z" 書式は実部を出力し、続いて c によって指定された文字、その後虚部を出力します。"Z" 書式は x+yi の形で数値を出力します。ここで x は実部、 y は虚部、 i は interface (虚数単位)の現在の設定です。y が負ならば、"-" が "+" の代わりに出力されます。もし与えられた数値が複素数でない場合、それは虚部をゼロとする複素数として扱われます。
|
書式
•
|
コードは書式を指定しようとするオブジェクトの種類を示します。コードは以下のいずれかです。
|
整数書式
|
オブジェクトを符号付き十進整数として書式指定します。
|
|
オブジェクトを符号なし8進整数として書式指定します。
|
|
整数オブジェクトを符号なし16進整数として書式指定します。十進数の 10 から 15 までの数字は文字 "A" から "F" (大文字 X の場合)、あるいは "a" から "f" (小文字 x の場合)で表されます。
|
浮動小数点書式
|
オブジェクトは浮動小数点数を科学表記に書式指定されます。小数点の前に1桁が表示され、小数点以降には精度で指定された桁の数字が表示されます(精度が指定されなかったときのデフォルトは 6 桁)。この後に文字 e あるいは E が続き、10 のベキ乗を示す符号付き整数が続きます。10 のベキ乗は符号と少なくとも 3 桁を持ちます。もし必要なら前にゼロが付けられます。
|
|
書式指定される値が infinity, -infinity, undefined の場合、出力はそれぞれ "Inf", "-Inf", あるいは "NaN" です。
|
|
オブジェクトは固定小数点数で書式指定されます。精度で指定された桁の数字は小数点の後に記されます (精度が指定されなかったときのデフォルトは 6 桁)。
|
|
もし書式指定される値が、 infinity, -infinity, undefined の場合、出力はそれぞれ"Inf", "-Inf", あるいは"NaN"です。
|
|
g または G
オブジェクトはその値によって、e (大文字 G が指定されたときは E) あるいは f で書式指定されます。精度は、有効数字の数を決めます。 精度が与えられていない場合、デフォルトでは 6 桁です。 精度が 0 というのは、1 として取り扱われます。出力された形式の指数が -4 よりも小さいか、精度以上の場合には、オブジェクトにはe 書式が使われます。それ以外は f 書式が使われます。零が続く場合、零は除かれ、小数点は、1 つ以上の数字が続く場合にのみ出力されます。
|
|
もし書式指定される値が、 infinity, -infinity, undefined の場合、出力はそれぞれ "Inf", "-Inf" あるいは "NaN" です。
|
|
浮動小数点数オブジェクトをバイト・オーダーに依存しない IEEE16 進ダンプ形式 (16 文字幅) で書式指定されます。幅指定に依存せずに、少なくとも 16 文字が常に出力されます。精度は無視されます。もし書式指定される値が、 infinity, -infinity, undefined の場合、出力はそれぞれ "Inf", "-Inf" あるいは "NaN" です。十進数の 10 から 15 までの数字は文字 "A" から "F" (大文字 Y の場合)、あるいは "a" から "f" (小文字 y の場合) で表されます。
|
文字列書式
|
オブジェクトは 1 つの文字として出力されます。オブジェクトはちょうど1文字で構成された Maple 記号か文字列でなければなりません。
|
|
オブジェクトは Maple 記号か文字列で、(指定されていれば) 少なくとも幅 (width) で指定された文字数で、(指定されていれば) 多くとも精度 (precision) で指定された文字数で文字列が出力されます。
|
代数的書式
|
オブジェクトはあらゆる Maple オブジェクトが可能で、正しい Maple 文法で出力されます。(指定されていれば) 少なくとも幅 (width) で指定された文字数が、(指定されていれば) 多くとも精度 (precision) で指定された文字数が出力されます。注意:精度が指定されて Maple 式が打ち切られた場合は、出力は不完全か正しくない Maple 式となります。
|
|
"%a" と "%A" 書式はほとんど一緒ですが、"%A" では Maple 記号の前後に必要なときに現れるクォートを無視するところが異なります。
|
|
これらは "%a" や "%A" に似ていますが、"%q" や "%Q" ではそれ以降のすべての引数を使って、式列として出力します。それぞれの要素は "%a" や "%A" 書式で指定されます。 "%q" や "%Q" ではそれ以降には書式指定する引数が残されていないので、その後ろに書式指定を書くことはできません。
|
|
オブジェクトはあらゆる Maple オブジェクトが可能ですが、Maple の ".m" ファイル形式で出力されます。(指定されていれば) 少なくとも幅 (width) で指定された文字数が、(指定されていれば) 多くとも精度 (precision) で指定された文字数が出力されます。注意:精度が指定されて Maple".m" 書式の式が打ち切られた場合は、出力は不完全か正しくない Maple 式となります。
|
その他
•
|
書式指定でない fmt の中にある文字と同じ出力を行います。
|
•
|
もし ({...} オプションを通じて、rtable_printf を参照) rtable 型書式のオプションが指定されていなければ、%a, %A, %m と %M 書式コードは rtable 構造そのものの表現を出力します。たとえば、%a は Matrix, Vector あるいは Array 呼び出しで出力されます。
|
•
|
もし %a, %A, %m と %M 以外の rtable 型書式のオプションが指定されていないか、または書式コードに対して空の rtable オプション (すなわち、単なる {}) が指定されたならば、次のデフォルトの書式が適用されます。
|
|
1 次元オブジェクトは 1 つの長い行に整形されます。要素は少なくとも 1 つの空白で区切られます。
|
|
N > 1 として、N 次元オブジェクトは、N-2 個の空白行で区切られた N-1 次元のオブジェクトの式列して整形されます。したがって、2 次元のオブジェクトは明らかな方法で整形され、3 次元のオブジェクトは空白行で区切られた 2 次元のオブジェクトの式列として整形されます。以下同様です。
|
•
|
Maple は 型同士の自由な変換を許すので、C 言語では制限されてしまうような他の型のオブジェクトに対しても書式指定が働く場合があります。浮動小数点書式はどれも、浮動小数点数以外に整数、有理数、浮動小数点オブジェクトを受け入れられます。オブジェクトは浮動小数点数値に評価され、適切に出力されます。有理数は現在の Digits の設定で計算され、指定された精度 (もし指定されてなければデフォルト精度) で出力されます。
|
•
|
printf 関数は、プロシジャーの中で使用された場合、出力の最後でも、自動的に改行しません。ワークシートのインターフェースのトップレベルで展開されたとき、printf コマンドは各コマンドを分離する改行を入れます。もし改行が必要なときには、fmt 文字列は改行文字 ("\n") を含まなければいけません。また、printf 関数からの出力は interface(screenwidth) 文字数での行の折り返しの対象となりません。
|
•
|
%o, %x と %X 書式はハードウェアベンダーによって提供されている基礎となる実装を使っています。その結果、8 進数や 16 進数の出力は機種構造の制限の対象となります。
|
•
|
fprintf が書こうとしているファイルが STREAM や RAW ファイルで、しかも READ モードで開かれているなら、同じオフセットで TEXT 型の WRITE モードで再度開かなければいけません。
|
•
|
fprintf でファイル名が与えられて、しかもファイルがまだ開かれていないならば、TEXT 型の WRITE モードで開かなければいけません。
|
•
|
ファイル名についての情報は file を参照して下さい。
|
|
|
例
|
|
>
|
printf("%g %g %g\n",123,123/456,123456789);
|
>
|
printf("%-2.5s:%2.5s:%2.5s\n",M,Map,MapleV);
|
| (2.1) |
>
|
printf("x=%+06.2f y=%+0*.*f y=%a y=%m\n",x,6,2,y,y,y);
|
x=+23.00 y=-00.04 y=-1/23 y=#!"""#B
| |
>
|
printf("%a\n",sprintf("%o %x\n\n",17129,17129));
|
>
|
str := sprintf("x = %d, y = %g",x,y);
|
| (2.2) |
| (2.3) |
>
|
printf("head=%a tail=%q\n",a,b,c,d,e,f);
|
head=a tail=b, c, d, e, f
| |
>
|
fd := fopen("temp_file", WRITE);
fprintf(fd, "x = %d, y = %g",x,y);
fclose(fd);
|
|
|
参照
|
|
lprint, print, writeline, writebytes, fscanf, sscanf, scanf, I/O Errors, File Types and Modules, file, backslash, fopen, fclose, open, rtable_printf
|
|