diff options
Diffstat (limited to 'reference/C/MAN/scanf.htm')
-rw-r--r-- | reference/C/MAN/scanf.htm | 365 |
1 files changed, 365 insertions, 0 deletions
diff --git a/reference/C/MAN/scanf.htm b/reference/C/MAN/scanf.htm new file mode 100644 index 0000000..a9f2e7a --- /dev/null +++ b/reference/C/MAN/scanf.htm @@ -0,0 +1,365 @@ +<TITLE>scanf</TITLE> +<body bgcolor="#ffffcc"> +<hr> +<pre> + + + +<h3>SCANF(3) Linux Programmer's Manual SCANF(3) +</h3> + +<h3>NAME +</h3> scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf - input + format conversion + +<h3>SYNOPSIS +</h3> #include <stdio.h> + int scanf( const char *format, ...); + int fscanf( FILE *stream, const char *format, ...); + int sscanf( const char *str, const char *format, ...); + + #include <stdarg.h> + int vscanf( const char *format, va_list ap); + int vsscanf( const char *str, const char *format, va_list ap); + int vfscanf( FILE *stream, const char *format, va_list ap); + +<h3>DESCRIPTION +</h3> The scanf family of functions scans input according to a + format as described below. This format may contain con- + version specifiers; the results from such conversions, if + any, are stored through the pointer arguments. The scanf + function reads input from the standard input stream stdin, + fscanf reads input from the stream pointer stream, and + sscanf reads its input from the character string pointed + to by str. + + The vfscanf function is analogous to vfprintf(3) and reads + input from the stream pointer stream using a variable + argument list of pointers (see stdarg(3). The vscanf + function scans a variable argument list from the standard + input and the vsscanf function scans it from a string; + these are analogous to the vprintf and vsprintf functions + respectively. + + Each successive pointer argument must correspond properly + with each successive conversion specifier (but see `sup- + pression' below). All conversions are introduced by the % + (percent sign) character. The format string may also con- + tain other characters. White space (such as blanks, tabs, + or newlines) in the format string match any amount of + white space, including none, in the input. Everything + else matches only itself. Scanning stops when an input + character does not match such a format character. Scan- + ning also stops when an input conversion cannot be made + (see below). + +<h3>CONVERSIONS +</h3> Following the % character introducing a conversion there + may be a number of flag characters, as follows: + + * Suppresses assignment. The conversion that follows + occurs as usual, but no pointer is used; the result + of the conversion is simply discarded. + + h Indicates that the conversion will be one of dioux + + + +<h3>BSD MANPAGE 29 November 1993 1 +</h3> + + + + +<h3>SCANF(3) Linux Programmer's Manual SCANF(3) +</h3> + + or n and the next pointer is a pointer to a short + int (rather than int). + + l Indicates either that the conversion will be one of + dioux or n and the next pointer is a pointer to a + long int (rather than int), or that the conversion + will be one of efg and the next pointer is a + pointer to double (rather than float). + + L Indicates that the conversion will be efg and the + next pointer is a pointer to long double. (This + type is not implemented; the L flag is currently + ignored--this may not be true for Linux.) + + In addition to these flags, there may be an optional maxi- + mum field width, expressed as a decimal integer, between + the % and the conversion. If no width is given, a default + of `infinity' is used (with one exception, below); other- + wise at most this many characters are scanned in process- + ing the conversion. Before conversion begins, most con- + versions skip white space; this white space is not counted + against the field width. + + The following conversions are available: + + % Matches a literal `%'. That is, `%%' in the format + string matches a single input `%' character. No + conversion is done, and assignment does not occur. + + d Matches an optionally signed decimal integer; the + next pointer must be a pointer to int. + + D Equivalent to ld; this exists only for backwards + compatibility. + + i Matches an optionally signed integer; the next + pointer must be a pointer to int. The integer is + read in base 16 if it begins with `0x' or `0X', in + base 8 if it begins with `0', and in base 10 other- + wise. Only characters that correspond to the base + are used. + + o Matches an octal integer; the next pointer must be + a pointer to unsigned int. + + O Equivalent to lo; this exists for backwards compat- + ibility. + + u Matches an optionally signed decimal integer; the + next pointer must be a pointer to unsigned int. + + x Matches an optionally a signed hexadecimal integer; + the next pointer must be a pointer to unsigned int. + + + + +<h3>BSD MANPAGE 29 November 1993 2 +</h3> + + + + +<h3>SCANF(3) Linux Programmer's Manual SCANF(3) +</h3> + + X Equivalent to lx; this violates the ANSI + C3.159-1989 (``ANSI C'') but is backwards compati- + ble with previous UNIX systems--I don't know what + Linux does with this. + + f Matches an optionally signed floating-point number; + the next pointer must be a pointer to float. + + e Equivalent to f. + + g Equivalent to f. + + E Equivalent to lf; this violates the ANSI + C3.159-1989 (``ANSI C'') but is backwards compati- + ble with previous UNIX systems--I don't know what + Linux does with this. + + F Equivalent to lf; this exists only for backwards + compatibility. + + s Matches a sequence of non-white-space characters; + the next pointer must be a pointer to char, and the + array must be large enough to accept all the + sequence and the terminating NUL character. The + input string stops at white space or at the maximum + field width, whichever occurs first. + + c Matches a sequence of width count characters + (default 1); the next pointer must be a pointer to + char, and there must be enough room for all the + characters (no terminating NUL is added). The + usual skip of leading white space is suppressed. + To skip white space first, use an explicit space in + the format. + + [ Matches a nonempty sequence of characters from the + specified set of accepted characters; the next + pointer must be a pointer to char, and there must + be enough room for all the characters in the + string, plus a terminating NUL character. The + usual skip of leading white space is suppressed. + The string is to be made up of characters in (or + not in) a particular set; the set is defined by the + characters between the open bracket [ character and + a close bracket ] character. The set excludes + those characters if the first character after the + open bracket is a circumflex ^. To include a close + bracket in the set, make it the first character + after the open bracket or the circumflex; any other + position will end the set. The hyphen character - + is also special; when placed between two other + characters, it adds all intervening characters to + the set. To include a hyphen, make it the last + character before the final close bracket. For + + + +<h3>BSD MANPAGE 29 November 1993 3 +</h3> + + + + +<h3>SCANF(3) Linux Programmer's Manual SCANF(3) +</h3> + + instance, `[^]0-9-]' means the set `everything + except close bracket, zero through nine, and + hyphen'. The string ends with the appearance of a + character not in the (or, with a circumflex, in) + set or when the field width runs out. + + p Matches a pointer value (as printed by `%p' in + printf(3); the next pointer must be a pointer to + void. + + n Nothing is expected; instead, the number of charac- + ters consumed thus far from the input is stored + through the next pointer, which must be a pointer + to int. This is not a conversion, although it can + be suppressed with the * flag. + + For backwards compatibility, other conversion characters + (except `\0') are taken as if they were `%d' or, if upper- + case, `%ld', and a `conversion' of `%\0' causes an immedi- + ate return of EOF. The F and X conversions will be + changed in the future to conform to the + ANSI C standard, after which they will act like and + respectively. The behavior of Linux on the non-standard + points is not known by this documenter. + + +<h3>RETURN VALUES +</h3> These functions return the number of input items assigned, + which can be fewer than provided for, or even zero, in the + event of a matching failure. Zero indicates that, while + there was input available, no conversions were assigned; + typically this is due to an invalid input character, such + as an alphabetic character for a `%d' conversion. The + value EOF is returned if an input failure occurs before + any conversion such as an end-of-file occurs. If an error + or end-of-file occurs after conversion has begun, the num- + ber of conversions which were successfully completed is + returned. + +</pre> +<hr> +<h3>SEE ALSO +</h3><p> +<a href=strtol.htm>strtol</a>, +<a href=strtoul.htm>strtoul</a>, +<a href=strtod.htm>strtod</a>, +<a href=getc.htm>getc</a>, +<a href=printf.htm>printf</a>, +<pre> + +<h3>STANDARDS +</h3> The functions fscanf, scanf, and sscanf conform to ANSI + C3.159-1989 (``ANSI C''). + +<h3>BUGS +</h3> Differences for Linux are not known at this time. The + following is for the BSD version: + + The current situation with %F and %X conversions is unfor- + tunate. + + All of the backwards compatibility formats will be removed + + + +<h3>BSD MANPAGE 29 November 1993 4 +</h3> + + + + +<h3>SCANF(3) Linux Programmer's Manual SCANF(3) +</h3> + + in the future. + + Numerical strings are truncated to 512 characters; for + example, %f and %d are implicitly %512f and %512d. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>BSD MANPAGE 29 November 1993 5 +</h3> + +
</pre> +<P> +<hr> +<p> +<center> +<table border=2 width=80%> +<tr align=center> +<td width=25%> +<a href=../cref.html>Top</a> +</td><td width=25%> +<a href=../master_index.html>Master Index</a> +</td><td width=25%> +<a href=../SYNTAX/keywords.html>Keywords</a> +</td><td width=25%> +<a href=../FUNCTIONS/funcref.htm>Functions</a> +</td> +</tr> +</table> +</center> +<p> +<hr> + +This manual page was brought to you by <i>mjl_man V-2.0</i> |