OSDN Git Service

(split) DP: release pages (catch up to 3.50).
[linuxjm/LDP_man-pages.git] / release / man3 / scanf.3
1 .\" Copyright (c) 1990, 1991 The Regents of the University of California.
2 .\" All rights reserved.
3 .\"
4 .\" This code is derived from software contributed to Berkeley by
5 .\" Chris Torek and the American National Standards Committee X3,
6 .\" on Information Processing Systems.
7 .\"
8 .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
9 .\" Redistribution and use in source and binary forms, with or without
10 .\" modification, are permitted provided that the following conditions
11 .\" are met:
12 .\" 1. Redistributions of source code must retain the above copyright
13 .\"    notice, this list of conditions and the following disclaimer.
14 .\" 2. Redistributions in binary form must reproduce the above copyright
15 .\"    notice, this list of conditions and the following disclaimer in the
16 .\"    documentation and/or other materials provided with the distribution.
17 .\" 3. All advertising materials mentioning features or use of this software
18 .\"    must display the following acknowledgement:
19 .\"     This product includes software developed by the University of
20 .\"     California, Berkeley and its contributors.
21 .\" 4. Neither the name of the University nor the names of its contributors
22 .\"    may be used to endorse or promote products derived from this software
23 .\"    without specific prior written permission.
24 .\"
25 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 .\" SUCH DAMAGE.
36 .\" %%%LICENSE_END
37 .\"
38 .\"     @(#)scanf.3     6.14 (Berkeley) 1/8/93
39 .\"
40 .\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu
41 .\" modified to resemble the GNU libio setup used in the Linux libc
42 .\" used in versions 4.x (x>4) and 5   Helmut.Geyer@iwr.uni-heidelberg.de
43 .\" Modified, aeb, 970121
44 .\" 2005-07-14, mtk, added description of %n$ form; various text
45 .\"     incorporated from the GNU C library documentation ((C) The
46 .\"     Free Software Foundation); other parts substantially rewritten.
47 .\"
48 .\" 2008-06-23, mtk
49 .\"     Add ERRORS section.
50 .\"     Document the 'a' and 'm' modifiers for dynamic string allocation.
51 .\"
52 .\"*******************************************************************
53 .\"
54 .\" This file was generated with po4a. Translate the source file.
55 .\"
56 .\"*******************************************************************
57 .TH SCANF 3 2013\-01\-30 GNU "Linux Programmer's Manual"
58 .SH 名前
59 scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf \- 書式付き入力変換
60 .SH 書式
61 .nf
62 \fB#include <stdio.h>\fP
63
64 \fBint scanf(const char *\fP\fIformat\fP\fB, ...);\fP
65 \fBint fscanf(FILE *\fP\fIstream\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP
66 \fBint sscanf(const char *\fP\fIstr\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP
67 .sp
68 \fB#include <stdarg.h>\fP
69
70 \fBint vscanf(const char *\fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP
71 \fBint vsscanf(const char *\fP\fIstr\fP\fB, const char *\fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP
72 \fBint vfscanf(FILE *\fP\fIstream\fP\fB, const char *\fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP
73 .fi
74 .sp
75 .in -4n
76 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
77 .in
78 .ad l
79 .sp
80 \fBvscanf\fP(), \fBvsscanf\fP(), \fBvfscanf\fP():
81 .RS 4
82 _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L;
83 .br
84 or \fIcc \-std=c99\fP
85 .ad
86 .RE
87 .SH 説明
88 \fBscanf\fP()  関数グループは、以下に述べるように、 \fIformat\fP に従って入力を読み込むものである。 この書式には \fI「変換指定」
89 (conversion specifications)\fP を含めることができ、変換指定があれば、その変換の結果は \fIformat\fP に続く
90 \fIpointer\fP 引き数が指す場所に格納される。 それぞれの \fIpointer\fP 引き数の型は、対応する変換指定が返す値に
91 適合していなければならない。
92
93 \fIformat\fP 中の変換指定の個数が \fIpointer\fP 引き数の数より多かった場合の結果は未定義である。 \fIpointer\fP
94 引き数の数が変換指定の個数よりも多かった場合、 余分な \fIpointer\fP 引き数の評価は行われるが、それ以外は行われず無視される。
95
96 \fBscanf\fP()  関数は標準入力ストリーム \fIstdin\fP からの入力を読み込む。 \fBfscanf\fP()  はストリームポインタ
97 \fIstream\fP からの入力を読み込む。 \fBsscanf\fP()  は文字列ポインタ \fIstr\fP で示された文字列からの入力を読み込む。
98 .PP
99 \fBvfscanf\fP()  関数は \fBvfprintf\fP(3)  と同様に、ストリームポインタ \fIstream\fP
100 からの入力をポインタの可変長引き数リストを用いて読み込む (\fBstdarg\fP(3)  を参照)。 \fBvscanf\fP()
101 関数は、可変長引き数のリストに基づき標準入力からの読み取りを行う。 \fBvsscanf\fP()  関数はそのリストに基づき文字列から読み取る。
102 これらの関係は \fBvprintf\fP(3)  と \fBvsprintf\fP(3)  関数の関係と同様である。
103 .PP
104 \fIformat\fP 文字列は \fI「命令」 (directive)\fP の列で構成される。命令は入力文字の系列をどのように処理するかを指示する
105 ものである。ある命令の処理が失敗すると、入力はそれ以上読み込まれず、 \fBscanf\fP()  は返る。「失敗」は \fI「入力の失敗」 (input
106 failure)\fP と \fI「一致の失敗」 (matching failure)\fP のいずれかである。
107 入力の失敗は入力文字が使用できなかったことを意味し、 一致の失敗は入力が不適切であったこと (下記参照) を意味する。
108
109 命令は以下のいずれかである:
110 .TP 
111 \(bu
112 ホワイトスペース (スペース、タブ、改行など; \fBisspace\fP(3)  参照) の列。
113 この命令は、入力中の任意の個数のホワイトスペースに一致する。 (「何もなし」にも一致する)。
114 .TP 
115 \(bu
116 通常文字 (つまり、ホワイトスペースと \(aq%\(aq 以外の文字)。 この文字は入力の次の文字に正確に一致しなければならない。
117 .TP 
118 \(bu
119 変換指定。変換指定は \(aq%\(aq (パーセント) 文字で始まる。 入力された文字の系列はこの指定にもとづいて変換され、 変換結果は対応する
120 \fIpointer\fP 引き数が指す場所に格納される。 入力の次の文字が変換指定と一致しない場合は、変換は失敗する \(emこれが \fI「一致の失敗」
121 (matching failure)\fP である。
122 .PP
123 \fIformat\fP 中の各々の \fI「変換指定」\fP は文字 \(aq%\(aq か文字系列 "\fB%\fP\fIn\fP\fB$\fP" (違いについては後述)
124 で始まり、以下の要素が続く。
125 .TP 
126 \(bu
127 代入抑制文字 \(aq*\(aq (省略可能)。 \fBscanf\fP()  は変換指定に指示された通り入力を読み込むが、その入力は捨てられる。 対応する
128 \fIpointer\fP 引き数は必要なく、 \fBscanf\fP()  が返す代入が成功した数にこの指定は含まれない。
129 .TP 
130 \(bu
131 An optional \(aqm\(aq character.  This is used with string conversions
132 (\fI%s\fP, \fI%c\fP, \fI%[\fP), and relieves the caller of the need to allocate a
133 corresponding buffer to hold the input: instead, \fBscanf\fP()  allocates a
134 buffer of sufficient size, and assigns the address of this buffer to the
135 corresponding \fIpointer\fP argument, which should be a pointer to a \fIchar *\fP
136 variable (this variable does not need to be initialized before the call).
137 The caller should subsequently \fBfree\fP(3)  this buffer when it is no longer
138 required.
139 .TP 
140 \(bu
141 \fI「最大フィールド幅」\fP を指定する 10進数 (省略可能)。 この最大値に達するか、一致しない文字が見つかるか、のどちらかに
142 なると、文字の読み込みを停止する。 ほとんどの変換では、先頭のホワイトスペース文字は捨てられ (例外については後述する)、
143 捨てられたこれらの文字は最大フィールド幅の計算には含まれない。 文字列の入力変換では、入力の末尾を示す終端の NULL バイト
144 (\(aq\e0\(aq)  も格納されるが、最大フィールド幅にはこの終端バイトは含まれない。
145 .TP 
146 \(bu
147 \fI「型修飾子」 (type modifier characters)\fP (省略可能)。 例えば、型修飾子 \fBl\fP を \fB%d\fP
148 などの整数変換と一緒に使うと、対応する \fIpointer\fP 引き数が \fIint\fP ではなく \fIlong int\fP を参照していることを指定できる。
149 .TP 
150 \(bu
151 \fI「変換指定」\fP : 実行すべき入力変換の種類を指定する。
152 .PP
153 \fIformat\fP 中の変換指定は、\(aq%\(aq で始まるか、 "\fB%\fP\fIn\fP\fB$\fP" で始まるかの、いずれかの形式である。 これら
154 2つの形式を同じ \fIformat\fP 文字列に混ぜることはできない。但し、"\fB%\fP\fIn\fP\fB$\fP" を 含む文字列に \fB%%\fP と \fB%*\fP
155 を含めることはできる。 \fIformat\fP に \(aq%\(aq 指定が含まれている場合、各々の \(aq%\(aq 指定と 後続の
156 \fIpointer\fP 引き数はその順番通りに対応する。 "\fB%\fP\fIn\fP\fB$\fP" 形式 (POSIX.1\-2001 では規定されているが、C99
157 にはない)  では、 \fIn\fP は 10進数であり、変換後の入力を \fIformat\fP の後ろの \fIn\fP 番目の \fIpointer\fP
158 引き数が参照する場所に格納することを指定する。
159 .SS 変換
160 変換指定には、以下の \fI「型修飾子」\fP を入れることができる。
161 .TP 
162 \fBh\fP
163 変換が \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, \fBn\fP のいずれかであり、次のポインタが (\fIint\fP ではなく)
164 \fIshort int\fP か \fIunsigned short int\fP へのポインタであることを示す。
165 .TP 
166 \fBhh\fP
167 \fBh\fP と同じだが、次のポインタが \fIsigned char\fP か \fIunsigned char\fP へのポインタであることを示す。
168 .TP 
169 \fBj\fP
170 \fBh\fP と同じだが、次のポインタが \fIintmax_t\fP か \fIuintmax_t\fP へのポインタであることを示す。 この修飾子は C99
171 で導入された。
172 .TP 
173 \fBl\fP
174 .\" This use of l was introduced in Amendment 1 to ISO C90.
175 変換が \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, \fBn\fP か \fBn\fP のいずれかであり次のポインタが (\fIint\fP
176 ではなく)  \fIlong int\fP か \fIunsigned long int\fP へのポインタであること、または、変換が \fBe\fP, \fBf\fP,
177 \fBg\fP のうちのひとつであり次のポインタが (\fIfloat\fP ではなく)  \fIdouble\fP へのポインタであることのいずれかであることを示す。
178 \fBl\fP 文字を二つ指定すると、 \fBL\fP と同じ意味となる。 \fB%c\fP や \fB%s\fP とともに使用すると、
179 パラメータはそれぞれワイド文字やワイド文字列へのポインタであると みなされる。
180 .TP 
181 \fBL\fP
182 .\" MTK, Jul 05: The following is no longer true for modern
183 .\" ANSI C (i.e., C99):
184 .\" (Note that long long is not an
185 .\" ANSI C
186 .\" type. Any program using this will not be portable to all
187 .\" architectures).
188 \fBe\fP, \fBf\fP, \fBg\fP 変換で、次のポインタが \fIlong double\fP へのポインタであることを示す。もしくは、 \fBd\fP, \fBi\fP,
189 \fBo\fP, \fBu\fP, \fBx\fP 変換で、次のポインタが \fIlong long\fP へのポインタであることのいずれかであることを示す。
190 .TP 
191 \fBq\fP
192 \fBL\fP と同一である。 この修飾子は ANSI C には存在しない。
193 .TP 
194 \fBt\fP
195 \fBh\fP と同様だが、次のポインタが \fIptrdiff_t\fP へのポインタであることを示す。 この修飾子は C99 で導入された。
196 .TP 
197 \fBz\fP
198 \fBh\fP と同様だが、次のポインタが \fIsize_t\fP へのポインタであることを示す。 この修飾子は C99 で導入された。
199 .PP
200 以下の \fI「変換指定子」\fP が利用可能である。
201 .TP 
202 \fB%\fP
203 文字 \(aq%\(aq に対応する。 書式文字列の中の \fB%\&%\fP は単一の文字 \(aq%\(aq に対応する。 変換は行われず
204 (但し、先頭のホワイトスペース文字は捨てられる)、 変数への代入は生じない。
205 .TP 
206 \fBd\fP
207 符号つきの 10進の整数に対応する。 次のポインタは \fIint\fP へのポインタでなければならない。
208 .TP 
209 \fBD\fP
210 \fIld\fP と同一である。これは以前の仕様との互換性だけのためにある。 (注意: これは libc4 の場合だけである。 libc5 や glibc
211 では \fB%D\fP は暗黙のうちに無視され、古いプログラムにおいて謎に満ちた失敗の原因となる。)
212 .TP 
213 \fBi\fP
214 符号つき整数に対応する。 次のポインタは \fIint\fP へのポインタでなければならない。 この整数は \fI0x\fP または \fI0X\fP で開始する場合には
215 16 進数、 \fI0\fP で開始する場合には 8 進数、その他の場合には 10進数として読み込まれる。
216 この変換で使用される文字は、これらの基数に対応しているものだけである。
217 .TP 
218 \fBo\fP
219 符号なしの 8 進の整数に対応する。 次のポインタは \fIunsigned int\fP でなければならない。
220 .TP 
221 \fBu\fP
222 符号なしの 10進の整数に対応する。 次のポインタは \fIunsigned int\fP へのポインタでなければならない。
223 .TP 
224 \fBx\fP
225 符号なしの 16 進の整数に対応する。 次のポインタは \fIunsigned int\fP へのポインタでなければならない。
226 .TP 
227 \fBX\fP
228 \fBx\fP と同一である。
229 .TP 
230 \fBf\fP
231 符号つき浮動小数点実数に対応する。 次のポインタは \fIfloat\fP へのポインタでなければならない。
232 .TP 
233 \fBe\fP
234 \fBf\fP と同一である。
235 .TP 
236 \fBg\fP
237 \fBf\fP と同一である。
238 .TP 
239 \fBE\fP
240 \fBf\fP と同一である。
241 .TP 
242 \fBa\fP
243 (C99)  \fBf\fP と同一である。
244 .TP 
245 \fBs\fP
246 ホワイトスペースではない文字で構成された文字列に対応する。 次のポインタは文字の配列へのポインタでなければならず、 その文字配列は、入力された文字列と
247 (自動的に追加される) 終端の NULL バイト (\(aq\e0\(aq) を格納するのに十分な大きさでなければならない。
248 文字列の入力は、ホワイトスペースが入力されるか、最大フィールド幅に 達するか、のどちらかが起こると停止される。
249 .TP 
250 \fBc\fP
251 \fI「最大フィールド幅」\fP (デフォルトは 1) で指定された幅の文字の列に対応する。 次のポインタは \fIchar\fP
252 へのポインタで、すべての文字を格納するのに十分な領域が なければならない (終端の NULL バイトは追加されない)。
253 通常行われる先頭のホワイトスペースの読み飛ばしは行われない。 先頭のホワイトスペースを読み飛ばすためには、
254 フォーマット文の中で明示的にスペースを使用すれば良い。
255 .TP 
256 \fB\&[\fP
257 格納された文字列のうちから取り出された、 指定された文字の集合で構成される空ではない文字の列に対応する。 次のポインタは \fIchar\fP
258 へのポインタでなければならず、 そこには文字列中のすべての文字と終端の NULL バイト を格納するための十分な領域がなければならない。
259 通常行われる先頭のホワイトスペースの読み飛ばしは行われない。 この文字列は特別な集合の中の文字で構成されている。 この集合は 開き括弧 \fB[\fP
260 と閉じ括弧 \fB]\fP の間の文字で定義される。 開き括弧のあとの最初の文字が曲アクセント記号 (\fB^\fP)
261 の場合、集合はこれらの文字を含まないものとなる。 閉じ括弧を集合に含ませるためには、この文字を開き括弧または
262 曲アクセント記号のあとの最初の文字にすればよい。 つまり、他の位置に閉じ括弧を置くと文字の集合が終る。 ハイフン \fB\-\fP もまた特殊文字である。
263 二つの異なる文字の間に置かれた時、この文字は、 その間にある全ての文字を集合に加える。 ハイフン自体を含ませるためには、
264 括弧が閉じる前の最後の一文字をハイフンにすればよい。 例えば、 \fB[^]0\-9\-]\fP は「閉じ括弧、0 〜 9、ハイフンの 3
265 種類を除く全ての文字」の集合を意味する。 この文字列は 集合に含まれていない (曲アクセントの場合には含まれる) 文字の
266 出現または確保された領域が使い切られた時に終了する。
267 .TP 
268 \fBp\fP
269 (\fBprintf\fP(3)  の \fB%p\fP で印字されるような) ポインタ値に対応する。 次のポインタは \fIvoid\fP
270 へのポインタへのポインタでなければならない。
271 .TP 
272 \fBn\fP
273 どんな入力も必要としない。 そのかわりに、 入力からここまで消費された文字数が次のポインタで指定された場所に 格納される。 このポインタは \fIint\fP
274 へのポインタでなければならない。 変換を抑制するのであれば \fB*\fP 代入抑制文字を使って抑制することができるのだが、
275 この変換指定子は変換では「ない」。 C 言語の標準規格では「実行の完了時に返される代入の回数は \fB%n\fP 命令の実行では増加しない」となっているが、
276 正誤表の内容はこれと矛盾するようである。おそらく、 \fB%n\fP 変換が返り値に与える影響についてはどのような仮定もしないのが 賢明であろう。
277 .SH 返り値
278 これらの関数は、一致と代入が成功した入力要素の個数を返す。 返される値は渡された変換の個数よりも少ないこともあり、 最初に一致の失敗があった場合には 0
279 になることもある。
280
281 最初の変換が成功する前に入力の最後に達して、一致の失敗が起こった場合には、 \fBEOF\fP が返される。また、 読み込みエラーが発生した場合にも
282 \fBEOF\fP が返される。読み込みエラーの場合には、そのストリームの エラー指示子がセットされ (\fBferror\fP(3)  参照)、 \fIerrno\fP
283 にエラーを示す値がセットされる。
284 .SH エラー
285 .TP 
286 \fBEAGAIN\fP
287 \fIstream\fP に対応するファイルディスクリプタが nonblocking となっており、 読み込み操作は停止 (block) することになる。
288 .TP 
289 \fBEBADF\fP
290 \fIstream\fP に対応するファイルディスクリプタが無効であるが、 読み込み用にオープンされていない。
291 .TP 
292 \fBEILSEQ\fP
293 入力されたバイト列が有効な文字を構成していない。
294 .TP 
295 \fBEINTR\fP
296 読み込み操作がシグナルにより割り込まれた。 \fBsignal\fP(7)  参照。
297 .TP 
298 \fBEINVAL\fP
299 引き数が十分でない。または \fIformat\fP が NULL である。
300 .TP 
301 \fBENOMEM\fP
302 メモリ不足。
303 .TP 
304 \fBERANGE\fP
305 整数変換の結果が、対応する整数型に格納できるサイズを越えてしまう。
306 .SH 準拠
307 \fBfscanf\fP(), \fBscanf\fP(), \fBsscanf\fP()  関数は C89, C99, POSIX.1\-2001 に準拠している。
308 これらの標準では、エラー \fBERANGE\fP は規定されていない。
309 .PP
310 \fBq\fP 指定子は \fIlong long\fP の 4.4BSD での記述方法である。 一方、整数変換での \fBll\fP または \fBL\fP の使用は GNU
311 での拡張である。
312 .PP
313 これらの関数の Linux 版は \fIGNU\fP \fIlibio\fP ライブラリーを元にしている。 より簡潔な説明には \fIGNU\fP \fIlibc
314 (glibc\-1.08)\fP の \fIinfo\fP 文書に目を通すこと。
315 .SH 注意
316 The GNU C library supported the dynamic allocation conversion specifier (as
317 a nonstandard extension) via the \fBa\fP character.  This feature seems to be
318 present at least as far back as glibc 2.0.
319 .PP
320 It is not available if the program is compiled with \fIgcc \-std=c99\fP or \fIgcc
321 \-D_ISOC99_SOURCE\fP (unless \fB_GNU_SOURCE\fP is also specified), in which case
322 the \fBa\fP is interpreted as a specifier for floating\-point numbers (see
323 above).
324
325 バージョン 2.7 以降では、glibc は \fBa\fP 修飾子と同じ目的で \fBm\fP 修飾子も提供している。 \fBm\fP 修飾子は以下の利点がある。
326 .IP * 2
327 \fB%c\fP 変換指定子にも適用できる (例えば \fB%3mc\fP)。
328 .IP *
329 浮動小数点変換指定子としての \fB%a\fP との紛らわしさが避けられる (また \fIgcc \-std=c99\fP などの影響も避けられる)。
330 .IP *
331 It is specified in the POSIX.1\-2008 standard.
332 .SH バグ
333 全ての関数は、完全に C89 に準拠している。しかし 追加で \fBq\fP と \fBa\fP 指定子が提供されており、同様に \fBL\fP と \fBl\fP
334 指定子の付加的な振る舞いもある。後者は、 C89 で定義された指定子の振る舞いを変更するものなので、 バグとみなされるかもしれない。
335 .PP
336 ANSI C で定義された型修飾子と変換指定子の組み合わせの中には 意味を
337 なさないものがある (例えば、 \fB%Ld\fP)。 これらが指定された場合、
338 Linux 上でははっきりと定義された振る舞いをするかもしれないが、
339 他のアーキテクチャでも同様になっているとは限らない。
340 それゆえに、ほとんどの場合、 ANSI C で定義されていない修飾子を使用した
341 方が良い。すなわち、 \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP 変換や \fBll\fP
342 と組み合わせる場合には、 \fBL\fP の代わりに \fBq\fP を使用した方が良い。
343 .PP
344 \fBq\fP の使用方法は 4.4BSD と同じではない。 4.4BSD では \fBq\fP は \fBL\fP と同等に浮動小数の変換に使用される。
345 .SH 例
346 To use the dynamic allocation conversion specifier, specify \fBm\fP as a length
347 modifier (thus \fB%ms\fP or \fB%m[\fP\fIrange\fP\fB]\fP).  The caller must \fBfree\fP(3)
348 the returned string, as in the following example:
349 .in +4n
350 .nf
351
352 char *p;
353 int n;
354
355 errno = 0;
356 n = scanf("%m[a\-z]", &p);
357 if (n == 1) {
358     printf("read: %s\en", p);
359     free(p);
360 } else if (errno != 0) {
361     perror("scanf");
362 } else {
363     fprintf(stderr, "No matching characters\en");
364 }
365 .fi
366 .in
367 .PP
368 上記の例にあるように、 \fBscanf\fP()  が文字列の読み込みに成功した場合にだけ、 \fBfree\fP(3)  を呼び出す必要がある。
369 .SH 関連項目
370 \fBgetc\fP(3), \fBprintf\fP(3)  \fBsetlocale\fP(3), \fBstrtod\fP(3), \fBstrtol\fP(3),
371 \fBstrtoul\fP(3),
372 .SH この文書について
373 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
374 である。プロジェクトの説明とバグ報告に関する情報は
375 http://www.kernel.org/doc/man\-pages/ に書かれている。