OSDN Git Service

(split) LDP: Update draft and release (from the previous commit)
[linuxjm/LDP_man-pages.git] / release / man3 / scanf.3
index 5bdca13..72278dc 100644 (file)
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH SCANF 3 2013\-01\-30 GNU "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1997 YOSHINO Takashi
+.\"       all rights reserved.
+.\" Translated 1998-02-17, YOSHINO Takashi <yoshino@civil.jcn.nihon-u.ac.jp>
+.\" Updated 2003-02-23, Kentaro Shirakata <argrath@ub32.org>
+.\" Updated 2005-09-18, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" Updated 2008-08-11, Akihiro MOTOKI, LDP v3.05
+.\" Updated 2012-04-30, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-05-01, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-05-04, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-07-22, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH SCANF 3 2014\-01\-11 GNU "Linux Programmer's Manual"
 .SH 名前
 scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf \- 書式付き入力変換
 .SH 書式
@@ -81,7 +94,7 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 .RS 4
 _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L;
 .br
-or \fIcc \-std=c99\fP
+または \fIcc \-std=c99\fP
 .ad
 .RE
 .SH 説明
@@ -128,14 +141,11 @@ failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれか
 \fIpointer\fP 引き数は必要なく、 \fBscanf\fP()  が返す代入が成功した数にこの指定は含まれない。
 .TP 
 \(bu
-An optional \(aqm\(aq character.  This is used with string conversions
-(\fI%s\fP, \fI%c\fP, \fI%[\fP), and relieves the caller of the need to allocate a
-corresponding buffer to hold the input: instead, \fBscanf\fP()  allocates a
-buffer of sufficient size, and assigns the address of this buffer to the
-corresponding \fIpointer\fP argument, which should be a pointer to a \fIchar *\fP
-variable (this variable does not need to be initialized before the call).
-The caller should subsequently \fBfree\fP(3)  this buffer when it is no longer
-required.
+文字 \(aqm\(aq (省略可能)。これは文字列変換 (\fI%s\fP, \fI%c\fP, \fI%[\fP) とともに使用され、これを使うと
+呼び出し元が入力を保持する対応するバッファを確保する必要がなくなる。 代わりに \fBscanf\fP()
+が必要な大きさのバッファを確保し、このバッファのアドレスを 対応する \fIpointer\fP 引き数に代入する。 \fIpointer\fP 引き数は
+\fIchar\ *\fP 型の変数へのポインタでなければならない (変数自体は呼び出し前に初期化されている必要はない)。
+呼び出し元は、不要になった時点で、このバッファを \fBfree\fP(3) すべきである。
 .TP 
 \(bu
 \fI「最大フィールド幅」\fP を指定する 10進数 (省略可能)。 この最大値に達するか、一致しない文字が見つかるか、のどちらかに
@@ -313,21 +323,31 @@ required.
 これらの関数の Linux 版は \fIGNU\fP \fIlibio\fP ライブラリーを元にしている。 より簡潔な説明には \fIGNU\fP \fIlibc
 (glibc\-1.08)\fP の \fIinfo\fP 文書に目を通すこと。
 .SH 注意
-The GNU C library supported the dynamic allocation conversion specifier (as
-a nonstandard extension) via the \fBa\fP character.  This feature seems to be
-present at least as far back as glibc 2.0.
+.SS "'a' 代入割り当て (assignment\-allocation) 修飾子"
+元々、 GNU C ライブラリ (glibc) では、 \fBa\fP 文字による文字列入力に対する動的割り当て変換指定子 (dynamic
+allocation conversion specifier) を (非標準の拡張として) サポートしている。この機能は少なくとも glibc 2.0
+の時点ではすでに存在している。 したがって、以下のようにして、 \fBscanf\fP()
+に入力文字列に対してバッファを割り当てさせることができる。割り当てられたバッファは \fI*buf\fP で返される。
+
+    char *buf;
+    scanf("%as", &buf);
 .PP
-この修飾子は \fIgcc \-std=c99\fP や \fIgcc \-D_ISOC99_SOURCE\fP でコンパイルしたプログラムでは
-(\fB_GNU_SOURCE\fP も同時に指定していない場合) 利用できない。この場合、 \fBa\fP は (上述の通り)
+この目的で文字 \fBa\fP を使うのは問題をはらんでいる。 なぜなら、 \fBa\fP は ISO C 標準では (浮動小数点入力を表す) の \fBf\fP
+の同義語として定義されているからである。 その代わり、 POSIX.1\-2008 では、(上記の「説明」に書かれている通り)
+代入割り当てを行う修飾子として \fBm\fP が規定されている。
+.PP
+\fBa\fP 修飾子は \fIgcc \-std=c99\fP や \fIgcc \-D_ISOC99_SOURCE\fP でコンパイルしたプログラムでは
+(\fB_GNU_SOURCE\fP も同時に指定していない場合) 利用できない点に注意。この場合、 \fBa\fP は (上述の通り)
 浮動小数点数を示す変換指定子と解釈される。
 
-バージョン 2.7 以降では、glibc は \fBa\fP 修飾子と同じ目的で \fBm\fP 修飾子も提供している。 \fBm\fP 修飾子は以下の利点がある。
+\fBm\fP 修飾子への対応はバージョン 2.7 以降の glibc で追加されている。新しいプログラムでぇあ \fBa\fP の代わりに \fBm\fP
+を使用すべきである。
+
+POSIX で標準化されているだけでなく、 \fBm\fP 修飾子には \fBa\fP を利用する場合に比べて以下のような利点がある。
 .IP * 2
 \fB%c\fP 変換指定子にも適用できる (例えば \fB%3mc\fP)。
 .IP *
 浮動小数点変換指定子としての \fB%a\fP との紛らわしさが避けられる (また \fIgcc \-std=c99\fP などの影響も避けられる)。
-.IP *
-POSIX.1\-2008 標準で規定されている。
 .SH バグ
 全ての関数は、完全に C89 に準拠している。しかし 追加で \fBq\fP と \fBa\fP 指定子が提供されており、同様に \fBL\fP と \fBl\fP
 指定子の付加的な振る舞いもある。後者は、 C89 で定義された指定子の振る舞いを変更するものなので、 バグとみなされるかもしれない。
@@ -342,9 +362,8 @@ Linux 上でははっきりと定義された振る舞いをするかもしれ
 .PP
 \fBq\fP の使用方法は 4.4BSD と同じではない。 4.4BSD では \fBq\fP は \fBL\fP と同等に浮動小数の変換に使用される。
 .SH 例
-To use the dynamic allocation conversion specifier, specify \fBm\fP as a length
-modifier (thus \fB%ms\fP or \fB%m[\fP\fIrange\fP\fB]\fP).  The caller must \fBfree\fP(3)
-the returned string, as in the following example:
+動的割り当て変換指定子を使用するには、長さ修飾子として \fBm\fP を指定する (つまり、全体としては \fB%ms\fP や
+\fB%m[\fP\fIrange\fP\fB]\fP となる)。以下の例にあるように、呼び出し側は返された文字列を \fBfree\fP(3) しなければならない。
 .in +4n
 .nf
 
@@ -369,6 +388,6 @@ if (n == 1) {
 \fBgetc\fP(3), \fBprintf\fP(3)  \fBsetlocale\fP(3), \fBstrtod\fP(3), \fBstrtol\fP(3),
 \fBstrtoul\fP(3),
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.64 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。