summaryrefslogtreecommitdiff
path: root/static/plan9-4e/man2/fscanf.2
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-26 16:38:00 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-26 16:38:00 -0400
commit97d5c458cfa039d857301e1ca7d5af3beb37131d (patch)
treeb460cd850d0537eb71806ba30358840377b27688 /static/plan9-4e/man2/fscanf.2
parentb89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff)
build: Better Build System
Diffstat (limited to 'static/plan9-4e/man2/fscanf.2')
-rw-r--r--static/plan9-4e/man2/fscanf.2402
1 files changed, 402 insertions, 0 deletions
diff --git a/static/plan9-4e/man2/fscanf.2 b/static/plan9-4e/man2/fscanf.2
new file mode 100644
index 00000000..bb94924f
--- /dev/null
+++ b/static/plan9-4e/man2/fscanf.2
@@ -0,0 +1,402 @@
+.TH FSCANF 2
+.SH NAME
+fscanf, scanf, sscanf, vfscanf \- scan formatted input
+.SH SYNOPSIS
+.B "#include <stdio.h>"
+.PP
+.B
+int fscanf(FILE *f, char *format, ...)
+.PP
+.B
+int scanf(char *format, ... )
+.PP
+.B
+int sscanf(char *s, char *format, ...)
+.PP
+.B
+int vfscanf(FILE *stream, char *format, char *args)
+.SH DESCRIPTION
+.I Fscanf
+reads from the named input stream
+.I f
+(see
+.IR fopen (2))
+under control of the string pointed to by
+.I format
+that specifies the admissible input sequences and how they are to be converted
+for assignment, using subsequent arguments as pointers to the objects
+to receive the converted input.
+If there are insufficient arguments for the format, the behavior is undefined.
+If the format is exhausted while arguments remain, the excess arguments
+are evaluated (as always) but are otherwise ignored.
+.PP
+.I Scanf
+and
+.I sscanf
+are the same, but they read from
+.I stdin
+and the character string
+.IR s ,
+respectively.
+.I Vfscanf
+is like
+.IR scanf ,
+except the
+.I args
+argument is a pointer to an argument in an argument list of the
+calling function and the effect is as if the calling function's
+argument list from that point on is passed to the scanf routines.
+.PP
+The format is composed of zero or more directives:
+one or more white-space characters; an ordinary character (not
+.BR % );
+or a conversion specification.
+Each conversion specification is introduced by the character
+.BR %.
+After the
+.BR % ,
+the following appear in sequence:
+.PP
+.RS
+An optional assignment-suppressing character
+.BR * .
+.PP
+An optional decimal integer that specifies the maximum field width.
+.PP
+An optional
+.BR h ,
+.B l
+(ell) or
+.B L
+indicating the size of the receiving object.
+The conversion specifiers
+.BR d ,
+.BR i ,
+and
+.B n
+shall be preceded by
+.B h
+if the corresponding argument is a pointer to
+.B short
+rather than a pointer to
+.BR int ,
+or by
+.B l
+if it is a pointer to
+.BR long .
+Similarly, the conversion specifiers
+.BR o ,
+.BR u ,
+and
+.B x
+shall be preceded by
+.B h
+if the corresponding argument is a pointer to
+.B unsigned
+.B short
+rather than a pointer to
+.BR unsigned ,
+or by
+.B l
+if it is a pointer to
+.B unsigned
+.BR long .
+Finally, the conversion specifiers
+.BR e ,
+.BR f ,
+and
+.B g
+shall be preceded by
+.B l
+if the corresponding argument is a pointer to
+.B double
+rather than a pointer to
+.BR float ,
+or by
+.B L
+if it is a pointer to
+.B long
+.BR double .
+If an
+.BR h ,
+.BR l ,
+or
+.B L
+appears with any other conversion specifier, the behavior is undefined.
+.PP
+A character that specifies the type of conversion to be applied.
+The valid conversion specifiers are described below.
+.RE
+.PP
+.I Fscanf
+executes each directive of the format in turn.
+If a directive fails, as detailed below,
+.I fscanf
+returns.
+Failures are described as input failures (due to the unavailability
+of input),
+or matching failures (due to inappropriate input).
+.PP
+A directive composed of white space is executed by reading input up
+to the first non-white-space character (which remains unread),
+or until no more characters can be read.
+.PP
+A directive that is an ordinary character is executed by reading
+the next character from the stream.
+If if differs from the one comprising the directive,
+the directive fails, and the differing and subsequent characters
+remain unread.
+.PP
+A directive that is a conversion specification defines a set of
+matching input sequences, as described below for each specifier.
+A conversion specification is executed in the following steps:
+.PP
+Input white-space characters (as specified by
+.IR isspace ,
+see
+.IR ctype (2))
+are skipped, unless the specification includes a
+.BR [ ,
+.BR c ,
+or
+.B n
+specifier.
+.PP
+An input item is read from the stream,
+unless the specification includes an
+.B n
+specifier.
+An input item is defined as the longest sequence of input characters
+(up to any specified maximum field width) which is an initial
+subsequence of a matching sequence.
+The first character, if any, after the input item remains unread.
+If the length of the input item is zero, the execution of
+the directive fails: this condition is a matching failure,
+unless an error prevented input from the stream,
+in which case it is an input failure.
+.PP
+Except in the case of a
+.B %
+specifier, the input item (or, in the case of a
+.B %n
+directive, the count of input characters)
+is converted to a type appropriate to the conversion specifier.
+If the input item is not a matching sequence, the execution of
+the directive fails: this condition is a matching failure.
+Unless assignment suppression was indicated by a
+.BR * ,
+the result of the conversion is placed in the object pointed to by the
+first argument following the
+.I format
+argument that has not already received a conversion result.
+If this object does not have an appropriate type,
+or if the result of the conversion cannot be represented
+in the space provided, the behavior is undefined.
+.PP
+The following conversion specifiers are valid:
+.TP 6
+.B d
+Matches an optionally signed decimal integer,
+whose format is the same as expected for the subject sequence
+of the
+.I strtol
+(see
+.IR atof (2))
+function with 10 for the
+.B base
+argument.
+The corresponding argument shall be a pointer to
+.BR int .
+.TP
+.B i
+Matches an optionally signed decimal integer,
+whose format is the same as expected for the subject sequence
+of the
+.I strtol
+function with 0 for the
+.B base
+argument.
+The corresponding argument shall be a pointer to
+.BR int .
+.TP
+.B o
+Matches an optionally signed octal integer,
+whose format is the same as expected for the subject sequence
+of the
+.I strtoul
+(see
+.IR atof (2))
+function with 8 for the
+.B base
+argument.
+The corresponding argument shall be a pointer to
+.B unsigned
+.BR int .
+.TP
+.B u
+Matches an optionally signed decimal integer,
+whose format is the same as expected for the subject sequence
+of the
+.I strtoul
+function with 10 for the
+.B base
+argument.
+The corresponding argument shall be a pointer to
+.B unsigned
+.BR int .
+.TP
+.B x
+Matches an optionally signed hexadecimal integer,
+whose format is the same as expected for the subject sequence
+of the
+.I strtoul
+function with 16 for the
+.B base
+argument.
+The corresponding argument shall be a pointer to
+.B unsigned
+.BR int .
+.TP
+.BR e , f , g
+Matches an optionally signed floating-point number, whose format is
+the same as expected for the subject string of the
+.I strtod
+(see
+.IR atof (2))
+function.
+The corresponding argument shall be a pointer to
+.BR float .
+.TP
+.B s
+Matches a sequence of non-white-space characters.
+The corresponding argument shall be a pointer to the initial
+character of an array large enough to accept the sequence
+and a terminating NUL (0) character, which will be added automatically.
+.TP
+.B [
+Matches a nonempty sequence of characters from a set of expected
+characters (the
+.IR scanset ).
+The corresponding argument shall be a pointer to the initial
+character of an array large enough to accept the sequence and a terminating
+NUL character, which will be added automatically.
+The conversion specifier includes all subsequent characters in the
+.I format
+string, up to and including the matching right brace
+.RB ( ] ).
+The characters between the brackets (the
+.IR scanlist )
+comprise the scanset, unless the character after the left bracket
+is a circumflex
+.RB ( ^ ),
+in which case the scanset contains all characters that do not appear
+in the scanlist between the circumflex and the right bracket.
+As a special case, if the conversion specifier begins with
+.B []
+or
+.BR [^] ,
+the right bracket character is in the scanlist and the next
+right bracket character is the matching right bracket
+that ends the specification.
+If a
+.B -
+character is in the scanlist and is not the first, nor the second
+where the first character is a
+.BR ^ ,
+nor the last character, the behavior is implementation-defined
+(in Plan 9: the scanlist includes all characters in the
+.SM ASCII
+(sic)
+range between the two characters on either side of the
+.BR - ).
+.TP
+.B c
+Matches a sequence of characters of the number specified by the field width
+(1 if no field width is present in the directive).
+The corresponding argument shall be a pointer to the initial character
+of an array large enough to accept the sequence.
+No NUL character is added.
+.TP
+.B P
+Matches an implementation-defined set of sequences,
+which should be the same as the set of sequences that may be
+produced by the
+.B %P
+conversion of the
+.IR fprintf (2)
+function
+(in Plan 9, a hexadecimal number).
+The corresponding argument shall be a pointer to a pointer to
+.BR void .
+The interpretation of the input item is implementation defined;
+however, for any input item other than a value converted earlier
+during the same program execution, the behavior of the
+.B %P
+conversion is undefined.
+.TP
+.B n
+No input is consumed.
+The corresponding argument shall be a pointer to integer into which
+is written the number of characters read from the input stream so far
+by this call to
+.IR fscanf .
+Execution of a
+.B %n
+directive does not increment the assignment count returned at the
+completion of
+.IR fscanf .
+.TP
+.B %
+Matches a single
+.BR % ;
+no conversion or assignment occurs.
+The complete conversion specification shall be
+.BR %% .
+.PD
+.PP
+If a conversion specification is invalid, the behavior is undefined.
+.PP
+The conversion specifiers
+.BR E ,
+.BR G ,
+and
+.B X
+are also valid and behave the same as, respectively,
+.BR e ,
+.BR g ,
+and
+.BR x .
+.PP
+If end-of-file is encountered during input, conversion is terminated.
+If end-of-file occurs before any characters matching the current
+directive have been read (other than leading white space,
+where permitted), execution of the current directive terminates with
+an input failure;
+otherwise, unless execution of the current directive is terminated
+with a matching failure, execution of the following directive
+(if any) is terminated with an input failure.
+.PP
+If conversion terminates on a conflicting input character,
+the offending input character is left unread in the input stream.
+Trailing white space (including newline characters) is left unread
+unless matched by a directive.
+The success of literal matches and suppressed assignments is not
+directly determinable other than via the
+.B %n
+directive.
+.PP
+The return value from
+.I fscanf
+is the number of input items assigned, which can be fewer than
+provided for, or even zero, in the event of an early matching failure.
+However, if an input failure occurs before any conversion,
+.B EOF
+is returned.
+.SH SOURCE
+.B /sys/src/libstdio
+.SH "SEE ALSO"
+.IR fopen (2),
+.IR fgetc (2)
+.SH BUGS
+Does not know about
+.SM UTF.