mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-12-23 05:30:18 +00:00
430 lines
11 KiB
Groff
430 lines
11 KiB
Groff
|
.\" Copyright (c) 1990, 1991, 1993
|
||
|
.\" The Regents of the University of California. All rights reserved.
|
||
|
.\"
|
||
|
.\" This code is derived from software contributed to Berkeley by
|
||
|
.\" Chris Torek and the American National Standards Committee X3,
|
||
|
.\" on Information Processing Systems.
|
||
|
.\"
|
||
|
.\" Redistribution and use in source and binary forms, with or without
|
||
|
.\" modification, are permitted provided that the following conditions
|
||
|
.\" are met:
|
||
|
.\" 1. Redistributions of source code must retain the above copyright
|
||
|
.\" notice, this list of conditions and the following disclaimer.
|
||
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||
|
.\" notice, this list of conditions and the following disclaimer in the
|
||
|
.\" documentation and/or other materials provided with the distribution.
|
||
|
.\" 3. All advertising materials mentioning features or use of this software
|
||
|
.\" must display the following acknowledgement:
|
||
|
.\" This product includes software developed by the University of
|
||
|
.\" California, Berkeley and its contributors.
|
||
|
.\" 4. Neither the name of the University nor the names of its contributors
|
||
|
.\" may be used to endorse or promote products derived from this software
|
||
|
.\" without specific prior written permission.
|
||
|
.\"
|
||
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
|
.\" SUCH DAMAGE.
|
||
|
.\"
|
||
|
.\" @(#)scanf.3 8.2 (Berkeley) 12/11/93
|
||
|
.\"
|
||
|
.TH SCANF 3 "15 September 1997" GNO "Library Routines"
|
||
|
.SH NAME
|
||
|
.BR scanf ,
|
||
|
.BR fscanf ,
|
||
|
.BR sscanf ,
|
||
|
.BR vscanf ,
|
||
|
.BR vsscanf ,
|
||
|
.BR vfscanf
|
||
|
\- input format conversion
|
||
|
.SH SYNOPSIS
|
||
|
#include <stdio.h>
|
||
|
.sp 1
|
||
|
int \fBscanf\fR (const char *\fIformat\fR, ...);
|
||
|
.br
|
||
|
int \fBfscanf\fR (FILE *\fIstream\fR, const char *\fIformat\fR, ...);
|
||
|
.br
|
||
|
int \fBsscanf\fR (const char *\fIstr\fR, const char *\fIformat\fR, ...);
|
||
|
.sp 1
|
||
|
#include <stdarg.h>
|
||
|
.sp 1
|
||
|
int \fBvscanf\fR (const char *\fIformat\fR, va_list \fIap\fR);
|
||
|
.br
|
||
|
int \fBvsscanf\fR (const char *\fIstr\fR, const char *\fIformat\fR, va_list \fIap\fR);
|
||
|
.br
|
||
|
int \fBvfscanf\fR (FILE *\fIstream\fR, const char *\fIformat\fR, va_list \fIap\fR);
|
||
|
.SH DESCRIPTION
|
||
|
The
|
||
|
.BR scanf
|
||
|
family of functions scans input according to a
|
||
|
.I format
|
||
|
as described below.
|
||
|
This format may contain
|
||
|
.IR "conversion specifiers" ;
|
||
|
the results from such conversions, if any,
|
||
|
are stored through the
|
||
|
.IR pointer
|
||
|
arguments.
|
||
|
.LP
|
||
|
The
|
||
|
.BR scanf
|
||
|
function
|
||
|
reads input from the standard input stream
|
||
|
.IR stdin ,
|
||
|
.BR fscanf
|
||
|
reads input from the stream pointer
|
||
|
.IR stream ,
|
||
|
and
|
||
|
.BR sscanf
|
||
|
reads its input from the character string pointed to by
|
||
|
.IR str .
|
||
|
The
|
||
|
.BR vfscanf
|
||
|
function
|
||
|
is analogous to
|
||
|
.BR vfprintf (3)
|
||
|
and reads input from the stream pointer
|
||
|
.I stream
|
||
|
using a variable argument list of pointers (see
|
||
|
.BR stdarg (3)).
|
||
|
The
|
||
|
.BR vscanf
|
||
|
function scans a variable argument list from the standard input and
|
||
|
the
|
||
|
.BR vsscanf
|
||
|
function scans it from a string;
|
||
|
these are analogous to
|
||
|
the
|
||
|
.BR vprintf
|
||
|
and
|
||
|
.BR vsprintf
|
||
|
functions respectively.
|
||
|
.LP
|
||
|
Each successive
|
||
|
.IR pointer
|
||
|
argument must correspond properly with
|
||
|
each successive conversion specifier
|
||
|
(but see `suppression' below).
|
||
|
All conversions are introduced by the
|
||
|
.BR %
|
||
|
(percent sign) character.
|
||
|
The
|
||
|
.I format
|
||
|
string
|
||
|
may also contain other characters.
|
||
|
White space (such as blanks, tabs, or newlines) in the
|
||
|
.I 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.
|
||
|
Scanning also stops
|
||
|
when an input conversion cannot be made (see below).
|
||
|
.SH CONVERSIONS
|
||
|
Following the
|
||
|
.BR %
|
||
|
character introducing a conversion
|
||
|
there may be a number of
|
||
|
.IR flag
|
||
|
characters, as follows:
|
||
|
.RS
|
||
|
.IP \fB*\fR
|
||
|
Suppresses assignment.
|
||
|
The conversion that follows occurs as usual, but no pointer is used;
|
||
|
the result of the conversion is simply discarded.
|
||
|
.IP \fBh\fR
|
||
|
Indicates that the conversion will be one of
|
||
|
.BR dioux
|
||
|
or
|
||
|
.BR n
|
||
|
and the next pointer is a pointer to a
|
||
|
.IR "short int"
|
||
|
(rather than
|
||
|
.IR int ).
|
||
|
.IP \fBl\fR
|
||
|
Indicates either that the conversion will be one of
|
||
|
.BR dioux
|
||
|
or
|
||
|
.BR n
|
||
|
and the next pointer is a pointer to a
|
||
|
.IR "long int"
|
||
|
(rather than
|
||
|
.IR int ),
|
||
|
or that the conversion will be one of
|
||
|
.BR efg
|
||
|
and the next pointer is a pointer to
|
||
|
.IR double
|
||
|
(rather than
|
||
|
.IR float ).
|
||
|
.IP \fBL\fR
|
||
|
Indicates that the conversion will be
|
||
|
.BR efg
|
||
|
and the next pointer is a pointer to
|
||
|
.IR "long double" .
|
||
|
(This type is not implemented; the
|
||
|
.BR L
|
||
|
flag is currently ignored.)
|
||
|
.RE
|
||
|
.LP
|
||
|
In addition to these flags,
|
||
|
there may be an optional maximum field width,
|
||
|
expressed as a decimal integer,
|
||
|
between the
|
||
|
.BR %
|
||
|
and the conversion.
|
||
|
If no width is given,
|
||
|
a default of `infinity' is used (with one exception, below);
|
||
|
otherwise at most this many characters are scanned
|
||
|
in processing the conversion.
|
||
|
Before conversion begins,
|
||
|
most conversions skip white space;
|
||
|
this white space is not counted against the field width.
|
||
|
.LP
|
||
|
The following conversions are available:
|
||
|
.RS
|
||
|
.IP \fB%\fR
|
||
|
Matches a literal `%'.
|
||
|
That is, `%\&%' in the format string
|
||
|
matches a single input `%' character.
|
||
|
No conversion is done, and assignment does not occur.
|
||
|
.IP \fBd\fR
|
||
|
Matches an optionally signed decimal integer;
|
||
|
the next pointer must be a pointer to
|
||
|
.IR int .
|
||
|
.IP \fBD\fR
|
||
|
Equivalent to
|
||
|
.BR ld ;
|
||
|
this exists only for backwards compatibility.
|
||
|
.IP \fBi\fR
|
||
|
Matches an optionally signed integer;
|
||
|
the next pointer must be a pointer to
|
||
|
.IR int .
|
||
|
The integer is read in base 16 if it begins
|
||
|
with
|
||
|
.BR 0x
|
||
|
or
|
||
|
.BR 0X ,
|
||
|
in base 8 if it begins with
|
||
|
.BR 0 ,
|
||
|
and in base 10 otherwise.
|
||
|
Only characters that correspond to the base are used.
|
||
|
.IP \fBo\fR
|
||
|
Matches an octal integer;
|
||
|
the next pointer must be a pointer to
|
||
|
.IR "unsigned int" .
|
||
|
.IP \fBO\fR
|
||
|
Equivalent to
|
||
|
.BR lo ;
|
||
|
this exists for backwards compatibility.
|
||
|
.IP \fBu\fR
|
||
|
Matches an optionally signed decimal integer;
|
||
|
the next pointer must be a pointer to
|
||
|
.IR "unsigned int" .
|
||
|
.IP \fBx\fR
|
||
|
Matches an optionally signed hexadecimal integer;
|
||
|
the next pointer must be a pointer to
|
||
|
.IR "unsigned int" .
|
||
|
.IP \fBX\fR
|
||
|
Equivalent to
|
||
|
.BR lx ;
|
||
|
this violates the ANSI/C standard,
|
||
|
but is backwards compatible with previous
|
||
|
UNIX systems.
|
||
|
.IP \fBf\fR
|
||
|
Matches an optionally signed floating-point number;
|
||
|
the next pointer must be a pointer to
|
||
|
.IR float .
|
||
|
.IP \fBe\fR
|
||
|
Equivalent to
|
||
|
.BR f .
|
||
|
.IP \fBg\fR
|
||
|
Equivalent to
|
||
|
.BR f .
|
||
|
.IP \fBE\fR
|
||
|
Equivalent to
|
||
|
.BR lf ;
|
||
|
this violates the ANSI/C standard,
|
||
|
but is backwards compatible with previous
|
||
|
UNIX systems.
|
||
|
.IP \fBF\fR
|
||
|
Equivalent to
|
||
|
.BR lf ;
|
||
|
this exists only for backwards compatibility.
|
||
|
.IP \fBs\fR
|
||
|
Matches a sequence of non-white-space characters;
|
||
|
the next pointer must be a pointer to
|
||
|
.IR char ,
|
||
|
and the array must be large enough to accept all the sequence and the
|
||
|
terminating
|
||
|
.BR NUL
|
||
|
character.
|
||
|
The input string stops at white space
|
||
|
or at the maximum field width, whichever occurs first.
|
||
|
.IP \fBc\fR
|
||
|
Matches a sequence of
|
||
|
.IR width
|
||
|
count
|
||
|
characters (default 1);
|
||
|
the next pointer must be a pointer to
|
||
|
.IR char ,
|
||
|
and there must be enough room for all the characters
|
||
|
(no terminating
|
||
|
.BR NUL
|
||
|
is added).
|
||
|
The usual skip of leading white space is suppressed.
|
||
|
To skip white space first, use an explicit space in the format.
|
||
|
.IP \fB\&[\fR
|
||
|
Matches a nonempty sequence of characters from the specified set
|
||
|
of accepted characters;
|
||
|
the next pointer must be a pointer to
|
||
|
.IR char ,
|
||
|
and there must be enough room for all the characters in the string,
|
||
|
plus a terminating
|
||
|
.BR 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
|
||
|
.BR [
|
||
|
character
|
||
|
and a close bracket
|
||
|
.BR ]
|
||
|
character.
|
||
|
The set
|
||
|
.IR excludes
|
||
|
those characters
|
||
|
if the first character after the open bracket is a circumflex
|
||
|
.BR ^ .
|
||
|
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
|
||
|
.BR -
|
||
|
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 instance,
|
||
|
.BR [^]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.
|
||
|
.IP \fBp\fR
|
||
|
Matches a pointer value (as printed by
|
||
|
.BR %p
|
||
|
in
|
||
|
.BR printf (3));
|
||
|
the next pointer must be a pointer to
|
||
|
.IR void .
|
||
|
.IP \fBn\fR
|
||
|
Nothing is expected;
|
||
|
instead, the number of characters consumed thus far from the input
|
||
|
is stored through the next pointer,
|
||
|
which must be a pointer to
|
||
|
.IR int .
|
||
|
This is
|
||
|
.IR not
|
||
|
a conversion, although it can be suppressed with the
|
||
|
.BR *
|
||
|
flag.
|
||
|
.RE
|
||
|
.LP
|
||
|
For backwards compatibility,
|
||
|
other conversion characters (except
|
||
|
.BR \e0 )
|
||
|
are taken as if they were
|
||
|
.BR %d
|
||
|
or, if uppercase,
|
||
|
.BR %ld ,
|
||
|
and a `conversion' of
|
||
|
.BR %\e0
|
||
|
causes an immediate return of
|
||
|
.BR EOF .
|
||
|
The
|
||
|
.BR F
|
||
|
and
|
||
|
.BR X
|
||
|
conversions will be changed in the future
|
||
|
to conform to the ANSI/C standard,
|
||
|
after which they will act like
|
||
|
.BR f
|
||
|
and
|
||
|
.BR x
|
||
|
respectively.
|
||
|
.LP
|
||
|
.SH RETURN VALUES
|
||
|
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
|
||
|
.BR %d
|
||
|
conversion.
|
||
|
.LP
|
||
|
The value
|
||
|
.BR 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 number of conversions which were successfully completed is returned.
|
||
|
.SH SEE ALSO
|
||
|
.BR strtol (3),
|
||
|
.BR strtoul (3),
|
||
|
.BR strtod (3),
|
||
|
.BR getc (3),
|
||
|
.BR printf (3)
|
||
|
.SH STANDARDS
|
||
|
The functions
|
||
|
.BR fscanf ,
|
||
|
.BR scanf ,
|
||
|
and
|
||
|
.BR sscanf
|
||
|
conform to ANSI/C.
|
||
|
.SH HISTORY
|
||
|
The functions
|
||
|
.BR vscanf ,
|
||
|
.BR vsscanf
|
||
|
and
|
||
|
.BR vfscanf
|
||
|
are new to this release.
|
||
|
.SH BUGS
|
||
|
The ORCA/C stdio implementation also provides a
|
||
|
.BR %b
|
||
|
format specifier, for Pascal-type strings. This is not currently implemented.
|
||
|
.LP
|
||
|
The current situation with
|
||
|
.BR %F
|
||
|
and
|
||
|
.BR %X
|
||
|
conversions is unfortunate.
|
||
|
.LP
|
||
|
All of the backwards compatibility formats will be removed in the future.
|
||
|
.LP
|
||
|
Numerical strings are truncated to 512 characters; for example,
|
||
|
.BR %f
|
||
|
and
|
||
|
.BR %d
|
||
|
are implicitly
|
||
|
.BR %512f
|
||
|
and
|
||
|
.BR %512d .
|