]>
Commit | Line | Data |
---|---|---|
5b2abdfb A |
1 | .\" Copyright (c) 1990, 1991, 1993 |
2 | .\" The Regents of the University of California. 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 | .\" Redistribution and use in source and binary forms, with or without | |
9 | .\" modification, are permitted provided that the following conditions | |
10 | .\" are met: | |
11 | .\" 1. Redistributions of source code must retain the above copyright | |
12 | .\" notice, this list of conditions and the following disclaimer. | |
13 | .\" 2. Redistributions in binary form must reproduce the above copyright | |
14 | .\" notice, this list of conditions and the following disclaimer in the | |
15 | .\" documentation and/or other materials provided with the distribution. | |
16 | .\" 3. All advertising materials mentioning features or use of this software | |
17 | .\" must display the following acknowledgement: | |
18 | .\" This product includes software developed by the University of | |
19 | .\" California, Berkeley and its contributors. | |
20 | .\" 4. Neither the name of the University nor the names of its contributors | |
21 | .\" may be used to endorse or promote products derived from this software | |
22 | .\" without specific prior written permission. | |
23 | .\" | |
24 | .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |
25 | .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
26 | .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
27 | .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
28 | .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
29 | .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
30 | .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
31 | .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
32 | .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
33 | .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
34 | .\" SUCH DAMAGE. | |
35 | .\" | |
36 | .\" @(#)scanf.3 8.2 (Berkeley) 12/11/93 | |
37 | .\" $FreeBSD: src/lib/libc/stdio/scanf.3,v 1.13 2001/10/01 16:08:59 ru Exp $ | |
38 | .\" | |
39 | .Dd December 11, 1993 | |
40 | .Dt SCANF 3 | |
41 | .Os | |
42 | .Sh NAME | |
43 | .Nm scanf , | |
44 | .Nm fscanf , | |
45 | .Nm sscanf , | |
46 | .Nm vscanf , | |
47 | .Nm vsscanf , | |
48 | .Nm vfscanf | |
49 | .Nd input format conversion | |
50 | .Sh LIBRARY | |
51 | .Lb libc | |
52 | .Sh SYNOPSIS | |
53 | .In stdio.h | |
54 | .Ft int | |
55 | .Fn scanf "const char *format" ... | |
56 | .Ft int | |
57 | .Fn fscanf "FILE *stream" "const char *format" ... | |
58 | .Ft int | |
59 | .Fn sscanf "const char *str" "const char *format" ... | |
60 | .In stdarg.h | |
61 | .Ft int | |
62 | .Fn vscanf "const char *format" "va_list ap" | |
63 | .Ft int | |
64 | .Fn vsscanf "const char *str" "const char *format" "va_list ap" | |
65 | .Ft int | |
66 | .Fn vfscanf "FILE *stream" "const char *format" "va_list ap" | |
67 | .Sh DESCRIPTION | |
68 | The | |
69 | .Fn scanf | |
70 | family of functions scans input according to a | |
71 | .Fa format | |
72 | as described below. | |
73 | This format may contain | |
74 | .Em conversion specifiers ; | |
75 | the results from such conversions, if any, | |
76 | are stored through the | |
77 | .Em pointer | |
78 | arguments. | |
79 | The | |
80 | .Fn scanf | |
81 | function | |
82 | reads input from the standard input stream | |
83 | .Em stdin , | |
84 | .Fn fscanf | |
85 | reads input from the stream pointer | |
86 | .Fa stream , | |
87 | and | |
88 | .Fn sscanf | |
89 | reads its input from the character string pointed to by | |
90 | .Fa str . | |
91 | The | |
92 | .Fn vfscanf | |
93 | function | |
94 | is analogous to | |
95 | .Xr vfprintf 3 | |
96 | and reads input from the stream pointer | |
97 | .Fa stream | |
98 | using a variable argument list of pointers (see | |
99 | .Xr stdarg 3 ) . | |
100 | The | |
101 | .Fn vscanf | |
102 | function scans a variable argument list from the standard input and | |
103 | the | |
104 | .Fn vsscanf | |
105 | function scans it from a string; | |
106 | these are analogous to | |
107 | the | |
108 | .Fn vprintf | |
109 | and | |
110 | .Fn vsprintf | |
111 | functions respectively. | |
112 | Each successive | |
113 | .Em pointer | |
114 | argument must correspond properly with | |
115 | each successive conversion specifier | |
116 | (but see `suppression' below). | |
117 | All conversions are introduced by the | |
118 | .Cm % | |
119 | (percent sign) character. | |
120 | The | |
121 | .Fa format | |
122 | string | |
123 | may also contain other characters. | |
124 | White space (such as blanks, tabs, or newlines) in the | |
125 | .Fa format | |
126 | string match any amount of white space, including none, in the input. | |
127 | Everything else | |
128 | matches only itself. | |
129 | Scanning stops | |
130 | when an input character does not match such a format character. | |
131 | Scanning also stops | |
132 | when an input conversion cannot be made (see below). | |
133 | .Sh CONVERSIONS | |
134 | Following the | |
135 | .Cm % | |
136 | character introducing a conversion | |
137 | there may be a number of | |
138 | .Em flag | |
139 | characters, as follows: | |
140 | .Bl -tag -width indent | |
141 | .It Cm * | |
142 | Suppresses assignment. | |
143 | The conversion that follows occurs as usual, but no pointer is used; | |
144 | the result of the conversion is simply discarded. | |
145 | .It Cm h | |
146 | Indicates that the conversion will be one of | |
147 | .Cm dioux | |
148 | or | |
149 | .Cm n | |
150 | and the next pointer is a pointer to a | |
151 | .Em short int | |
152 | (rather than | |
153 | .Em int ) . | |
154 | .It Cm l | |
155 | Indicates either that the conversion will be one of | |
156 | .Cm dioux | |
157 | or | |
158 | .Cm n | |
159 | and the next pointer is a pointer to a | |
160 | .Em long int | |
161 | (rather than | |
162 | .Em int ) , | |
163 | or that the conversion will be one of | |
164 | .Cm efg | |
165 | and the next pointer is a pointer to | |
166 | .Em double | |
167 | (rather than | |
168 | .Em float ) . | |
169 | .It Cm L | |
170 | Indicates that the conversion will be | |
171 | .Cm efg | |
172 | and the next pointer is a pointer to | |
173 | .Em long double . | |
174 | (This type is not implemented; the | |
175 | .Cm L | |
176 | flag is currently ignored.) | |
177 | .It Cm q | |
178 | Indicates either that the conversion will be one of | |
179 | .Cm dioux | |
180 | or | |
181 | .Cm n | |
182 | and the next pointer is a pointer to a | |
183 | .Em long long int | |
184 | (rather than | |
185 | .Em int ) , | |
186 | .El | |
187 | .Pp | |
188 | In addition to these flags, | |
189 | there may be an optional maximum field width, | |
190 | expressed as a decimal integer, | |
191 | between the | |
192 | .Cm % | |
193 | and the conversion. | |
194 | If no width is given, | |
195 | a default of `infinity' is used (with one exception, below); | |
196 | otherwise at most this many characters are scanned | |
197 | in processing the conversion. | |
198 | Before conversion begins, | |
199 | most conversions skip white space; | |
200 | this white space is not counted against the field width. | |
201 | .Pp | |
202 | The following conversions are available: | |
203 | .Bl -tag -width XXXX | |
204 | .It Cm % | |
205 | Matches a literal `%'. | |
206 | That is, `%\&%' in the format string | |
207 | matches a single input `%' character. | |
208 | No conversion is done, and assignment does not occur. | |
209 | .It Cm d | |
210 | Matches an optionally signed decimal integer; | |
211 | the next pointer must be a pointer to | |
212 | .Em int . | |
213 | .It Cm D | |
214 | Equivalent to | |
215 | .Cm ld ; | |
216 | this exists only for backwards compatibility. | |
217 | .It Cm i | |
218 | Matches an optionally signed integer; | |
219 | the next pointer must be a pointer to | |
220 | .Em int . | |
221 | The integer is read in base 16 if it begins | |
222 | with | |
223 | .Ql 0x | |
224 | or | |
225 | .Ql 0X , | |
226 | in base 8 if it begins with | |
227 | .Ql 0 , | |
228 | and in base 10 otherwise. | |
229 | Only characters that correspond to the base are used. | |
230 | .It Cm o | |
231 | Matches an octal integer; | |
232 | the next pointer must be a pointer to | |
233 | .Em unsigned int . | |
234 | .It Cm O | |
235 | Equivalent to | |
236 | .Cm lo ; | |
237 | this exists for backwards compatibility. | |
238 | .It Cm u | |
239 | Matches an optionally signed decimal integer; | |
240 | the next pointer must be a pointer to | |
241 | .Em unsigned int . | |
242 | .It Cm x | |
243 | Matches an optionally signed hexadecimal integer; | |
244 | the next pointer must be a pointer to | |
245 | .Em unsigned int . | |
246 | .It Cm X | |
247 | Equivalent to | |
248 | .Cm lx ; | |
249 | this violates the | |
250 | .St -isoC , | |
251 | but is backwards compatible with previous | |
252 | .Ux | |
253 | systems. | |
254 | .It Cm f | |
255 | Matches an optionally signed floating-point number; | |
256 | the next pointer must be a pointer to | |
257 | .Em float . | |
258 | .It Cm e | |
259 | Equivalent to | |
260 | .Cm f . | |
261 | .It Cm g | |
262 | Equivalent to | |
263 | .Cm f . | |
264 | .It Cm E | |
265 | Equivalent to | |
266 | .Cm lf ; | |
267 | this violates the | |
268 | .St -isoC , | |
269 | but is backwards compatible with previous | |
270 | .Ux | |
271 | systems. | |
272 | .It Cm F | |
273 | Equivalent to | |
274 | .Cm lf ; | |
275 | this exists only for backwards compatibility. | |
276 | .It Cm s | |
277 | Matches a sequence of non-white-space characters; | |
278 | the next pointer must be a pointer to | |
279 | .Em char , | |
280 | and the array must be large enough to accept all the sequence and the | |
281 | terminating | |
282 | .Dv NUL | |
283 | character. | |
284 | The input string stops at white space | |
285 | or at the maximum field width, whichever occurs first. | |
286 | .It Cm c | |
287 | Matches a sequence of | |
288 | .Em width | |
289 | count | |
290 | characters (default 1); | |
291 | the next pointer must be a pointer to | |
292 | .Em char , | |
293 | and there must be enough room for all the characters | |
294 | (no terminating | |
295 | .Dv NUL | |
296 | is added). | |
297 | The usual skip of leading white space is suppressed. | |
298 | To skip white space first, use an explicit space in the format. | |
299 | .It Cm \&[ | |
300 | Matches a nonempty sequence of characters from the specified set | |
301 | of accepted characters; | |
302 | the next pointer must be a pointer to | |
303 | .Em char , | |
304 | and there must be enough room for all the characters in the string, | |
305 | plus a terminating | |
306 | .Dv NUL | |
307 | character. | |
308 | The usual skip of leading white space is suppressed. | |
309 | The string is to be made up of characters in | |
310 | (or not in) | |
311 | a particular set; | |
312 | the set is defined by the characters between the open bracket | |
313 | .Cm [ | |
314 | character | |
315 | and a close bracket | |
316 | .Cm ] | |
317 | character. | |
318 | The set | |
319 | .Em excludes | |
320 | those characters | |
321 | if the first character after the open bracket is a circumflex | |
322 | .Cm ^ . | |
323 | To include a close bracket in the set, | |
324 | make it the first character after the open bracket | |
325 | or the circumflex; | |
326 | any other position will end the set. | |
327 | The hyphen character | |
328 | .Cm - | |
329 | is also special; | |
330 | when placed between two other characters, | |
331 | it adds all intervening characters to the set. | |
332 | To include a hyphen, | |
333 | make it the last character before the final close bracket. | |
334 | For instance, | |
335 | .Ql [^]0-9-] | |
336 | means the set `everything except close bracket, zero through nine, | |
337 | and hyphen'. | |
338 | The string ends with the appearance of a character not in the | |
339 | (or, with a circumflex, in) set | |
340 | or when the field width runs out. | |
341 | .It Cm p | |
342 | Matches a pointer value (as printed by | |
343 | .Ql %p | |
344 | in | |
345 | .Xr printf 3 ) ; | |
346 | the next pointer must be a pointer to | |
347 | .Em void . | |
348 | .It Cm n | |
349 | Nothing is expected; | |
350 | instead, the number of characters consumed thus far from the input | |
351 | is stored through the next pointer, | |
352 | which must be a pointer to | |
353 | .Em int . | |
354 | This is | |
355 | .Em not | |
356 | a conversion, although it can be suppressed with the | |
357 | .Cm * | |
358 | flag. | |
359 | .El | |
360 | .Pp | |
361 | The decimal point | |
362 | character is defined in the program's locale (category | |
363 | .Dv LC_NUMERIC ) . | |
364 | .Pp | |
365 | For backwards compatibility, | |
366 | other conversion characters (except | |
367 | .Ql \e0 ) | |
368 | are taken as if they were | |
369 | .Ql %d | |
370 | or, if uppercase, | |
371 | .Ql %ld , | |
372 | and a `conversion' of | |
373 | .Ql %\e0 | |
374 | causes an immediate return of | |
375 | .Dv EOF . | |
376 | The | |
377 | .Cm F | |
378 | and | |
379 | .Cm X | |
380 | conversions will be changed in the future | |
381 | to conform to the | |
382 | .Tn ANSI | |
383 | C standard, | |
384 | after which they will act like | |
385 | .Cm f | |
386 | and | |
387 | .Cm x | |
388 | respectively. | |
389 | .Sh RETURN VALUES | |
390 | These | |
391 | functions | |
392 | return | |
393 | the number of input items assigned, which can be fewer than provided | |
394 | for, or even zero, in the event of a matching failure. | |
395 | Zero | |
396 | indicates that, while there was input available, | |
397 | no conversions were assigned; | |
398 | typically this is due to an invalid input character, | |
399 | such as an alphabetic character for a | |
400 | .Ql %d | |
401 | conversion. | |
402 | The value | |
403 | .Dv EOF | |
404 | is returned if an input failure occurs before any conversion such as an | |
405 | end-of-file occurs. | |
406 | If an error or end-of-file occurs after conversion | |
407 | has begun, | |
408 | the number of conversions which were successfully completed is returned. | |
409 | .Sh SEE ALSO | |
410 | .Xr getc 3 , | |
411 | .Xr printf 3 , | |
412 | .Xr strtod 3 , | |
413 | .Xr strtol 3 , | |
414 | .Xr strtoul 3 | |
415 | .Sh STANDARDS | |
416 | The functions | |
417 | .Fn fscanf , | |
418 | .Fn scanf , | |
419 | and | |
420 | .Fn sscanf | |
421 | conform to | |
422 | .St -isoC . | |
423 | .Sh HISTORY | |
424 | The functions | |
425 | .Fn vscanf , | |
426 | .Fn vsscanf | |
427 | and | |
428 | .Fn vfscanf | |
429 | are new to this release. | |
430 | .Sh BUGS | |
431 | The current situation with | |
432 | .Cm %F | |
433 | and | |
434 | .Cm %X | |
435 | conversions is unfortunate. | |
436 | .Pp | |
437 | All of the backwards compatibility formats will be removed in the future. | |
438 | .Pp | |
439 | Numerical strings are truncated to 512 characters; for example, | |
440 | .Cm %f | |
441 | and | |
442 | .Cm %d | |
443 | are implicitly | |
444 | .Cm %512f | |
445 | and | |
446 | .Cm %512d . |