C99 と POSIX.1\-2001 では、 \fBsprintf\fP(), \fBsnprintf\fP(), \fBvsprintf\fP(),
\fBvsnprintf\fP() の呼び出しで、範囲が重複するオブジェクト間でコピーが発生する場合の 結果は不定であると規定されている
-(例えば、出力先の文字列と入力された 引き数の一つが同じバッファを参照している場合などである)。 「注意」の節を参照。
+(ä¾\8bã\81\88ã\81°ã\80\81å\87ºå\8a\9bå\85\88ã\81®æ\96\87å\97å\88\97ã\81¨å\85¥å\8a\9bã\81\95ã\82\8cã\81\9f å¼\95ã\81\8dæ\95°ã\81®ä¸\80ã\81¤ã\81\8cå\90\8cã\81\98ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81ªã\81©ã\81§ã\81\82ã\82\8b)ã\80\82 ã\80\8c注æ\84\8fã\80\8dã\81®ç¯\80ã\82\92å\8f\82ç\85§ã\80\82
.SS "Return Values"
成功時には、上記の関数は書き込まれた文字数を返す (文字列の最後を示すために使用するヌルバイトは数に含まれない)。
.TP
\fBhh\fP
整数変換に対応する引き数が \fIsigned char\fP か \fIunsigned char\fP で、 \fBn\fP 変換に対応する引き数が \fIsigned
-char\fP へのポインタであることを示す。
+char\fP ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\81\93ã\81¨ã\82\92示ã\81\99ã\80\82
.TP
\fBh\fP
整数変換に対応する引き数が \fIshort int\fP か \fIunsigned short int\fP で、 \fBn\fP 変換に対応する引き数が
-\fIshort int\fP へのポインタであることを示す。
+\fIshort int\fP ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\81\93ã\81¨ã\82\92示ã\81\99ã\80\82
.TP
\fBl\fP
各変換に対応する引き数が、 整数変換では \fIlong int\fPか \fIunsigned long int\fP、 \fBn\fP 変換では \fIlong
-long int\fP へのポインタ、 \fBc\fP 変換では \fIwint_t\fP、 \fBs\fP 変換では \fIwchar_t\fP へのポインタであることを示す。
+long int\fP へのポインター、 \fBc\fP 変換では \fIwint_t\fP、 \fBs\fP 変換では \fIwchar_t\fP
+へのポインターであることを示す。
.TP
\fBll\fP (エルエル)
整数変換に対応する引き数が \fIlong long int\fP か \fIunsigned long long int\fP で、 \fBn\fP
-変換に対応する引き数が \fIlong int\fP へのポインタであることを示す。
+å¤\89æ\8f\9bã\81«å¯¾å¿\9cã\81\99ã\82\8bå¼\95ã\81\8dæ\95°ã\81\8c \fIlong int\fP ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\81\93ã\81¨ã\82\92示ã\81\99ã\80\82
.TP
\fBL\fP
.\" .TP
.TP
\fBj\fP
整数変換に対応する引き数が \fIintmax_t\fP か \fIuintmax_t\fP で、 \fBn\fP 変換に対応する引き数が \fIintmax_t\fP
-へのポインタであることを示す。
+ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\81\93ã\81¨ã\82\92示ã\81\99ã\80\82
.TP
\fBz\fP
.\" (Linux libc5 has
.\" with this meaning.
.\" Don't use it.)
整数変換に対応する引き数が \fIsize_t\fP か \fIssize_t\fP で、 \fBn\fP 変換に対応する引き数が \fIsize_t\fP
-へのポインタであることを示す。
+ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\81\93ã\81¨ã\82\92示ã\81\99ã\80\82
.TP
\fBt\fP
-整数変換に対応する引き数が \fIptrdiff_t\fP で、 \fBn\fP 変換に対応する引き数が \fIptrdiff_t\fP へのポインタであることを示す。
+æ\95´æ\95°å¤\89æ\8f\9bã\81«å¯¾å¿\9cã\81\99ã\82\8bå¼\95ã\81\8dæ\95°ã\81\8c \fIptrdiff_t\fP ã\81§ã\80\81 \fBn\fP å¤\89æ\8f\9bã\81«å¯¾å¿\9cã\81\99ã\82\8bå¼\95ã\81\8dæ\95°ã\81\8c \fIptrdiff_t\fP ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\81\93ã\81¨ã\82\92示ã\81\99ã\80\82
.PP
SUSv3 では上記のすべてが規定されている。 SUSv2 で規定されていたのは、 長さ修飾子 \fBh\fP (\fBhd\fP, \fBhi\fP, \fBho\fP,
\fBhx\fP, \fBhX\fP, \fBhn\fP), \fBl\fP (\fBld\fP, \fBli\fP, \fBlo\fP, \fBlx\fP, \fBlX\fP, \fBln\fP, \fBlc\fP,
関数を初期シフト状態で呼び出してマルチバイト文字列に変換し、 変換されたマルチバイト文字列を出力する。
.TP
\fBs\fP
-\fBl\fP 修飾子がない場合、 引き数は \fIconst char\ *\fP 型で文字型の配列へのポインタ (文字列へのポインタ) であることが
+\fBl\fP 修飾子がない場合、 引き数は \fIconst char\ *\fP 型で文字型の配列へのポインター (文字列へのポインター) であることが
期待されている。配列中の文字は、終端の ヌルバイト (\(aq\e0\(aq) が出てくるまで出力される (終端文字は出力されない)。
精度が指定されていると、指定された字数以上は出力されない。 精度が指定された場合には、終端バイトが存在する必要はない。
精度が指定されていなかったり、精度の値が配列の大きさより大きい場合には、 配列は終端のヌルバイトを含んでいなければならない。
-\fBl\fP 修飾子が指定されている場合、 引き数は \fIconst wchar_t\ *\fP 型でワイド文字の配列へのポインタであることが期待されている。
+\fBl\fP 修飾å\90ã\81\8cæ\8c\87å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81 å¼\95ã\81\8dæ\95°ã\81¯ \fIconst wchar_t\ *\fP å\9e\8bã\81§ã\83¯ã\82¤ã\83\89æ\96\87å\97ã\81®é\85\8då\88\97ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\81\93ã\81¨ã\81\8cæ\9c\9få¾\85ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\80\82
配列中のワイド文字は (1文字毎に \fBwcrtomb\fP(3) を呼び出して) マルチバイト文字に変換される (最初のワイド文字の変換の前に
\fBwcrtomb\fP() のシフト状態を初期状態に戻してから変換は行われる)。 マルチバイト文字への変換は、文字列を終端するヌルワイド文字が
出てくるまで行われ、終端ヌルワイド文字も含めて変換される。 結果のマルチバイト文字列は、終端のヌルバイトが出てくるまで 出力される
(C99, C11 にはないが SUSv2, SUSv3, SUSv4 にはある) \fBls\fP と同じ。使ってはならない。
.TP
\fBp\fP
-\fIvoid\ *\fP ポインタ引き数を (\fB%#x\fP や \fB%#lx\fP のような) 16 進数で出力する。
+\fIvoid\ *\fP ポインター引き数を (\fB%#x\fP や \fB%#lx\fP のような) 16 進数で出力する。
.TP
\fBn\fP
これまでに書き込まれた文字数が対応する引き数が指す整数に格納される。 この引き数は \fIint\ *\fP
.\" glibc 2.0 adds conversion characters \fBC\fP and \fBS\fP.
\fBsnprintf\fP() の返り値を見ると、 SUSv2 と C99 標準は互いに矛盾している。 SUSv2 では、 \fBsnprintf\fP()
が \fIsize\fP=0 で呼び出された場合、 1 未満の値を何か返り値とするように規定している。 一方 C99 では、このような場合 \fIstr\fP を
-NULL とし、返り値として (通常通り) 出力バッファが十分な大きさが あった場合に出力されるであろう文字数を返す。 SUSv3 やそれ以降では
+NULL ã\81¨ã\81\97ã\80\81è¿\94ã\82\8aå\80¤ã\81¨ã\81\97ã\81¦ (é\80\9a常é\80\9aã\82\8a) å\87ºå\8a\9bã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81\8cå\8d\81å\88\86ã\81ªå¤§ã\81\8dã\81\95ã\81\8c ã\81\82ã\81£ã\81\9få ´å\90\88ã\81«å\87ºå\8a\9bã\81\95ã\82\8cã\82\8bã\81§ã\81\82ã\82\8dã\81\86æ\96\87å\97æ\95°ã\82\92è¿\94ã\81\99ã\80\82 SUSv3 ã\82\84ã\81\9dã\82\8c以é\99\8dã\81§ã\81¯
C99 の \fBsnprintf\fP() の規定にあわせたものとなっている。
.PP
glibc 2.1 では、長さ修飾子 \fBhh\fP, \fBj\fP, \fBt\fP, \fBz\fP と変換文字 \fBa\fP, \fBA\fP が追加された。
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=7075
しかしながら、標準規格では、 \fBsprintf\fP(), \fBsnprintf\fP(), \fBvsprintf\fP(), \fBvsnprintf\fP()
-の呼び出しにおいて、コピー元とコピー先のバッファが重なっていた場合の 結果は不定である、と明記されている。 使用する \fBgcc\fP(1)
+ã\81®å\91¼ã\81³å\87ºã\81\97ã\81«ã\81\8aã\81\84ã\81¦ã\80\81ã\82³ã\83\94ã\83¼å\85\83ã\81¨ã\82³ã\83\94ã\83¼å\85\88ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81\8cé\87\8dã\81ªã\81£ã\81¦ã\81\84ã\81\9få ´å\90\88ã\81® çµ\90æ\9e\9cã\81¯ä¸\8då®\9aã\81§ã\81\82ã\82\8bã\80\81ã\81¨æ\98\8eè¨\98ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\80\82 使ç\94¨ã\81\99ã\82\8b \fBgcc\fP(1)
のバージョンや指定したコンパイラのオプション次第では、 上記のような呼び出しで、期待した結果が得られ「ない」ことがある。
.\" .SH HISTORY
.\" caused memory leaks.
\fBprintf(\fP\fIfoo\fP\fB);\fP のようなコードはしばしばバグを引き起こす。 なぜなら \fIfoo\fP に %
文字が含まれてるかもしれないからである。 \fIfoo\fP が信頼できないユーザー入力から作られている場合には、 その中に \fB%n\fP
-が含まれていることがあり、 \fBprintf\fP() 呼び出し時にメモリへの書き込みが起こり、 セキュリティーホールを作ることになるかもしれない。
+ã\81\8cå\90«ã\81¾ã\82\8cã\81¦ã\81\84ã\82\8bã\81\93ã\81¨ã\81\8cã\81\82ã\82\8aã\80\81 \fBprintf\fP() å\91¼ã\81³å\87ºã\81\97æ\99\82ã\81«ã\83¡ã\83¢ã\83ªã\83¼ã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\81\8cèµ·ã\81\93ã\82\8aã\80\81 ã\82»ã\82ã\83¥ã\83ªã\83\86ã\82£ã\83¼ã\83\9bã\83¼ã\83«ã\82\92ä½\9cã\82\8bã\81\93ã\81¨ã\81«ã\81ªã\82\8bã\81\8bã\82\82ã\81\97ã\82\8cã\81ªã\81\84ã\80\82
.SH 例
\fIPi\fP を 5 桁で出力する。
.in +4n
.in
.PP
日付と時間を "Sunday, July 3, 10:02" の形式で出力する。 (\fIweekday\fP と \fImonth\fP
-は文字列へのポインタである)
+ã\81¯æ\96\87å\97å\88\97ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8b)
.in +4n
.nf