summaryrefslogtreecommitdiffstats
path: root/upstream/mageia-cauldron/man3p/fscanf.3p
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/mageia-cauldron/man3p/fscanf.3p')
-rw-r--r--upstream/mageia-cauldron/man3p/fscanf.3p883
1 files changed, 883 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man3p/fscanf.3p b/upstream/mageia-cauldron/man3p/fscanf.3p
new file mode 100644
index 00000000..68e9ad0d
--- /dev/null
+++ b/upstream/mageia-cauldron/man3p/fscanf.3p
@@ -0,0 +1,883 @@
+'\" et
+.TH FSCANF "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\"
+.SH PROLOG
+This manual page is part of the POSIX Programmer's Manual.
+The Linux implementation of this interface may differ (consult
+the corresponding Linux manual page for details of Linux behavior),
+or the interface may not be implemented on Linux.
+.\"
+.SH NAME
+fscanf,
+scanf,
+sscanf
+\(em convert formatted input
+.SH SYNOPSIS
+.LP
+.nf
+#include <stdio.h>
+.P
+int fscanf(FILE *restrict \fIstream\fP, const char *restrict \fIformat\fP, ...);
+int scanf(const char *restrict \fIformat\fP, ...);
+int sscanf(const char *restrict \fIs\fP, const char *restrict \fIformat\fP, ...);
+.fi
+.SH DESCRIPTION
+The functionality described on this reference page is aligned with the
+ISO\ C standard. Any conflict between the requirements described here and the
+ISO\ C standard is unintentional. This volume of POSIX.1\(hy2017 defers to the ISO\ C standard.
+.P
+The
+\fIfscanf\fR()
+function shall read from the named input
+.IR stream .
+The
+\fIscanf\fR()
+function shall read from the standard input stream
+.IR stdin .
+The
+\fIsscanf\fR()
+function shall read from the string
+.IR s .
+Each function reads bytes, interprets them according to a format, and
+stores the results in its arguments. Each expects, as arguments, a
+control string
+.IR format
+described below, and a set of
+.IR pointer
+arguments indicating where the converted input should be stored. The
+result is undefined if there are insufficient arguments for the
+format. If the format is exhausted while arguments remain, the excess
+arguments shall be evaluated but otherwise ignored.
+.P
+Conversions can be applied to the
+.IR n th
+argument after the
+.IR format
+in the argument list, rather than to the next unused argument. In this
+case, the conversion specifier character
+.BR %
+(see below) is replaced by the sequence \fR"%\fIn\fR$"\fR, where
+.IR n
+is a decimal integer in the range [1,{NL_ARGMAX}].
+This feature provides for the definition of format strings that select
+arguments in an order appropriate to specific languages. In format
+strings containing the \fR"%\fIn\fR$"\fR form of conversion
+specifications,
+it is unspecified whether numbered arguments in the argument list can
+be referenced from the format string more than once.
+.P
+The
+.IR format
+can contain either form of a conversion specification\(emthat is,
+.BR %
+or \fR"%\fIn\fR$"\fR\(embut the two forms cannot be mixed
+within a single
+.IR format
+string. The only exception to this is that
+.BR %%
+or
+.BR %*
+can be mixed with the \fR"%\fIn\fR$"\fR form. When numbered argument
+specifications are used, specifying the
+.IR N th
+argument requires that all the leading arguments, from the first to
+the (\c
+.IR N \-1)th,
+are pointers.
+.P
+The
+\fIfscanf\fR()
+function in all its forms shall allow detection of a language-dependent
+radix character in the input string. The radix character is defined in
+the current locale (category
+.IR LC_NUMERIC ).
+In the POSIX locale, or in a locale where the radix character is not
+defined, the radix character shall default to a
+<period>
+(\c
+.BR '.' ).
+.P
+The format is a character string, beginning and ending in its initial
+shift state, if any, composed of zero or more directives. Each
+directive is composed of one of the following:
+one or more white-space characters (\c
+<space>,
+<tab>,
+<newline>,
+<vertical-tab>,
+or
+<form-feed>);
+an ordinary character (neither
+.BR '%'
+nor a white-space character); or a conversion specification. Each
+conversion specification is introduced by the character
+.BR '%'
+or the character sequence \fR"%\fIn\fR$"\fR,
+after which the following appear in sequence:
+.IP " *" 4
+An optional assignment-suppressing character
+.BR '*' .
+.IP " *" 4
+An optional non-zero decimal integer that specifies the maximum field
+width.
+.IP " *" 4
+An optional assignment-allocation character
+.BR 'm' .
+.IP " *" 4
+An option length modifier that specifies the size of the receiving
+object.
+.IP " *" 4
+A
+.IR "conversion specifier"
+character that specifies the type of conversion to be applied. The
+valid conversion specifiers are described below.
+.P
+The
+\fIfscanf\fR()
+functions shall execute each directive of the format in turn. If a
+directive fails, as detailed below, the function shall return. Failures
+are described as input failures (due to the unavailability of input
+bytes) or matching failures (due to inappropriate input).
+.P
+A directive composed of one or more white-space characters shall be
+executed by reading input until no more valid input can be read, or up
+to the first byte which is not a white-space character, which remains
+unread.
+.P
+A directive that is an ordinary character shall be executed as follows:
+the next byte shall be read from the input and compared with the byte
+that comprises the directive; if the comparison shows that they are not
+equivalent, the directive shall fail, and the differing and subsequent
+bytes shall remain unread. Similarly, if end-of-file, an encoding
+error, or a read error prevents a character from being read, the
+directive shall fail.
+.P
+A directive that is a conversion specification defines a set of
+matching input sequences, as described below for each conversion
+character. A conversion specification shall be executed in the
+following steps.
+.P
+Input white-space characters (as specified by
+.IR "\fIisspace\fR\^(\|)")
+shall be skipped, unless the conversion specification includes a
+.BR [ ,
+.BR c ,
+.BR C ,
+or
+.BR n
+conversion specifier.
+.P
+An item shall be read from the input, unless the conversion
+specification includes an
+.BR n
+conversion specifier. An input item shall be defined as the longest
+sequence of input bytes (up to any specified maximum field width, which
+may be measured in characters or bytes dependent on the conversion
+specifier) which is an initial subsequence of a matching sequence. The
+first byte, if any, after the input item shall remain unread. If the
+length of the input item is 0, the execution of the conversion
+specification shall fail; this condition is a matching failure, unless
+end-of-file, an encoding error, or a read error prevented input from
+the stream, in which case it is an input failure.
+.P
+Except in the case of a
+.BR %
+conversion specifier, the input item (or, in the case of a
+.BR %n
+conversion specification, the count of input bytes) shall be converted
+to a type appropriate to the conversion character. If the input item is
+not a matching sequence, the execution of the conversion specification
+fails; this condition is a matching failure. Unless assignment
+suppression was indicated by a
+.BR '*' ,
+the result of the conversion shall be placed in the object pointed to
+by the first argument following the
+.IR format
+argument that has not already received a conversion result if the
+conversion specification is introduced by
+.BR % ,
+or in the
+.IR n th
+argument if introduced by the character sequence \fR"%\fIn\fR$"\fR.
+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.
+.P
+The
+.BR %c ,
+.BR %s ,
+and
+.BR %[
+conversion specifiers shall accept an optional assignment-allocation
+character
+.BR 'm' ,
+which shall cause a memory buffer to be allocated to hold the string
+converted including a terminating null character. In such a case,
+the argument corresponding to the conversion specifier should be a
+reference to a pointer variable that will receive a pointer to the
+allocated buffer. The system shall allocate a buffer as if
+\fImalloc\fR()
+had been called. The application shall be responsible for freeing the
+memory after usage. If there is insufficient memory to allocate a buffer,
+the function shall set
+.IR errno
+to
+.BR [ENOMEM]
+and a conversion error shall result. If the function returns EOF, any
+memory successfully allocated for parameters using assignment-allocation
+character
+.BR 'm'
+by this call shall be freed before the function returns.
+.br
+.P
+The length modifiers and their meanings are:
+.IP "\fRhh\fR" 8
+Specifies that a following
+.BR d ,
+.BR i ,
+.BR o ,
+.BR u ,
+.BR x ,
+.BR X ,
+or
+.BR n
+conversion specifier applies to an argument with type pointer to
+.BR "signed char"
+or
+.BR "unsigned char" .
+.IP "\fRh\fR" 8
+Specifies that a following
+.BR d ,
+.BR i ,
+.BR o ,
+.BR u ,
+.BR x ,
+.BR X ,
+or
+.BR n
+conversion specifier applies to an argument with type pointer to
+.BR "short"
+or
+.BR "unsigned short" .
+.IP "\fRl\fR\ (ell)" 8
+Specifies that a following
+.BR d ,
+.BR i ,
+.BR o ,
+.BR u ,
+.BR x ,
+.BR X ,
+or
+.BR n
+conversion specifier applies to an argument with type pointer to
+.BR "long"
+or
+.BR "unsigned long" ;
+that a following
+.BR a ,
+.BR A ,
+.BR e ,
+.BR E ,
+.BR f ,
+.BR F ,
+.BR g ,
+or
+.BR G
+conversion specifier applies to an argument with type pointer to
+.BR double ;
+or that a following
+.BR c ,
+.BR s ,
+or
+.BR [
+conversion specifier applies to an argument with type pointer to
+.BR wchar_t .
+If the
+.BR 'm'
+assignment-allocation character is specified, the conversion applies
+to an argument with the type pointer to a pointer to
+.BR wchar_t .
+.IP "\fRll\fR\ (ell-ell)" 8
+.br
+Specifies that a following
+.BR d ,
+.BR i ,
+.BR o ,
+.BR u ,
+.BR x ,
+.BR X ,
+or
+.BR n
+conversion specifier applies to an argument with type pointer to
+.BR "long long"
+or
+.BR "unsigned long long" .
+.IP "\fRj\fR" 8
+Specifies that a following
+.BR d ,
+.BR i ,
+.BR o ,
+.BR u ,
+.BR x ,
+.BR X ,
+or
+.BR n
+conversion specifier applies to an argument with type pointer to
+.BR intmax_t
+or
+.BR uintmax_t .
+.IP "\fRz\fR" 8
+Specifies that a following
+.BR d ,
+.BR i ,
+.BR o ,
+.BR u ,
+.BR x ,
+.BR X ,
+or
+.BR n
+conversion specifier applies to an argument with type pointer to
+.BR size_t
+or the corresponding signed integer type.
+.IP "\fRt\fR" 8
+Specifies that a following
+.BR d ,
+.BR i ,
+.BR o ,
+.BR u ,
+.BR x ,
+.BR X ,
+or
+.BR n
+conversion specifier applies to an argument with type pointer to
+.BR ptrdiff_t
+or the corresponding
+.BR unsigned
+type.
+.IP "\fRL\fR" 8
+Specifies that a following
+.BR a ,
+.BR A ,
+.BR e ,
+.BR E ,
+.BR f ,
+.BR F ,
+.BR g ,
+or
+.BR G
+conversion specifier applies to an argument with type pointer to
+.BR "long double" .
+.P
+If a length modifier appears with any conversion specifier other than
+as specified above, the behavior is undefined.
+.P
+The following conversion specifiers are valid:
+.IP "\fRd\fP" 8
+Matches an optionally signed decimal integer, whose format is the same
+as expected for the subject sequence of
+\fIstrtol\fR()
+with the value 10 for the
+.IR base
+argument. In the absence of a size modifier, the application shall
+ensure that the corresponding argument is a pointer to
+.BR int .
+.IP "\fRi\fP" 8
+Matches an optionally signed integer, whose format is the same as
+expected for the subject sequence of
+\fIstrtol\fR()
+with 0 for the
+.IR base
+argument. In the absence of a size modifier, the application shall
+ensure that the corresponding argument is a pointer to
+.BR int .
+.IP "\fRo\fP" 8
+Matches an optionally signed octal integer, whose format is the same as
+expected for the subject sequence of
+\fIstrtoul\fR()
+with the value 8 for the
+.IR base
+argument. In the absence of a size modifier, the application shall
+ensure that the corresponding argument is a pointer to
+.BR unsigned .
+.IP "\fRu\fP" 8
+Matches an optionally signed decimal integer, whose format is the same
+as expected for the subject sequence of
+\fIstrtoul\fR()
+with the value 10 for the
+.IR base
+argument. In the absence of a size modifier, the application shall
+ensure that the corresponding argument is a pointer to
+.BR unsigned .
+.IP "\fRx\fP" 8
+Matches an optionally signed hexadecimal integer, whose format is the
+same as expected for the subject sequence of
+\fIstrtoul\fR()
+with the value 16 for the
+.IR base
+argument. In the absence of a size modifier, the application shall
+ensure that the corresponding argument is a pointer to
+.BR unsigned .
+.IP "\fRa\fR,\ \fRe\fR,\ \fRf\fR,\ \fRg\fR" 8
+.br
+Matches an optionally signed floating-point number, infinity, or NaN,
+whose format is the same as expected for the subject sequence of
+\fIstrtod\fR().
+In the absence of a size modifier, the application shall ensure that
+the corresponding argument is a pointer to
+.BR float .
+.RS 8
+.P
+If the
+\fIfprintf\fR()
+family of functions generates character string representations for
+infinity and NaN (a symbolic entity encoded in floating-point
+format) to support IEEE\ Std\ 754\(hy1985, the
+\fIfscanf\fR()
+family of functions shall recognize them as input.
+.RE
+.IP "\fRs\fP" 8
+Matches a sequence of bytes that are not white-space characters. If the
+.BR 'm'
+assignment-allocation character is not specified, the application shall
+ensure that the corresponding argument is a pointer to the initial byte
+of an array of
+.BR char ,
+.BR "signed char" ,
+or
+.BR "unsigned char"
+large enough to accept the sequence and a terminating null character
+code, which shall be added automatically.
+Otherwise, the application shall ensure that the corresponding
+argument is a pointer to a pointer to a
+.BR char .
+.RS 8
+.P
+If an
+.BR l
+(ell) qualifier is present, the input is a sequence of characters that
+begins in the initial shift state. Each character shall be converted to
+a wide character as if by a call to the
+\fImbrtowc\fR()
+function, with the conversion state described by an
+.BR mbstate_t
+object initialized to zero before the first character is converted.
+If the
+.BR 'm'
+assignment-allocation character is not specified, the application shall
+ensure that the corresponding argument is a pointer to an array of
+.BR wchar_t
+large enough to accept the sequence and the terminating null wide
+character, which shall be added automatically.
+Otherwise, the application shall ensure that the corresponding
+argument is a pointer to a pointer to a
+.BR wchar_t .
+.RE
+.IP "\fR[\fR" 8
+Matches a non-empty sequence of bytes from a set of expected bytes (the
+.IR scanset ).
+The normal skip over white-space characters shall be suppressed in this
+case. If the
+.BR 'm'
+assignment-allocation character is not specified, the application shall
+ensure that the corresponding argument is a pointer to the initial byte
+of an array of
+.BR char ,
+.BR "signed char" ,
+or
+.BR "unsigned char"
+large enough to accept the sequence and a terminating null byte, which
+shall be added automatically.
+Otherwise, the application shall ensure that the corresponding
+argument is a pointer to a pointer to a
+.BR char .
+.RS 8
+.P
+If an
+.BR l
+(ell) qualifier is present, the input is a sequence of characters that
+begins in the initial shift state. Each character in the sequence shall
+be converted to a wide character as if by a call to the
+\fImbrtowc\fR()
+function, with the conversion state described by an
+.BR mbstate_t
+object initialized to zero before the first character is converted.
+If the
+.BR 'm'
+assignment-allocation character is not specified, the application shall
+ensure that the corresponding argument is a pointer to an array of
+.BR wchar_t
+large enough to accept the sequence and the terminating null wide
+character, which shall be added automatically.
+.br
+Otherwise, the application shall ensure that the corresponding
+argument is a pointer to a pointer to a
+.BR wchar_t .
+.P
+The conversion specification includes all subsequent bytes in the
+.IR format
+string up to and including the matching
+<right-square-bracket>
+(\c
+.BR ']' ).
+The bytes between the square brackets (the
+.IR scanlist )
+comprise the scanset, unless the byte after the
+<left-square-bracket>
+is a
+<circumflex>
+(\c
+.BR '\(ha' ),
+in which case the scanset contains all bytes that do not appear in the
+scanlist between the
+<circumflex>
+and the
+<right-square-bracket>.
+If the conversion specification begins with
+.BR \(dq[\|]\(dq
+or
+.BR \(dq[\(ha]\(dq ,
+the
+<right-square-bracket>
+is included in the scanlist and the next
+<right-square-bracket>
+is the matching
+<right-square-bracket>
+that ends the conversion specification; otherwise, the first
+<right-square-bracket>
+is the one that ends the conversion specification. If a
+.BR '\-'
+is in the scanlist and is not the first character, nor the second where
+the first character is a
+.BR '\(ha' ,
+nor the last character, the behavior is implementation-defined.
+.RE
+.IP "\fRc\fP" 8
+Matches a sequence of bytes of the number specified by the field width
+(1 if no field width is present in the conversion specification). No
+null byte is added. The normal skip over white-space characters
+shall be suppressed in this case. If the
+.BR 'm'
+assignment-allocation character is not specified, the application shall
+ensure that the corresponding argument is a pointer to the initial byte
+of an array of
+.BR char ,
+.BR "signed char" ,
+or
+.BR "unsigned char"
+large enough to accept the sequence.
+Otherwise, the application shall ensure that the corresponding
+argument is a pointer to a pointer to a
+.BR char .
+.RS 8
+.P
+If an
+.BR l
+(ell) qualifier is present, the input shall be a sequence of characters
+that begins in the initial shift state. Each character in the sequence
+is converted to a wide character as if by a call to the
+\fImbrtowc\fR()
+function, with the conversion state described by an
+.BR mbstate_t
+object initialized to zero before the first character is converted.
+No null wide character is added. If the
+.BR 'm'
+assignment-allocation character is not specified, the application shall
+ensure that the corresponding argument is a pointer to an array of
+.BR wchar_t
+large enough to accept the resulting sequence of wide characters.
+Otherwise, the application shall ensure that the corresponding
+argument is a pointer to a pointer to a
+.BR wchar_t .
+.RE
+.IP "\fRp\fP" 8
+Matches an implementation-defined set of sequences, which shall be the
+same as the set of sequences that is produced by the
+.BR %p
+conversion specification of the corresponding
+\fIfprintf\fR()
+functions. The application shall ensure that the corresponding argument
+is a pointer to a pointer to
+.BR void .
+The interpretation of the input item is implementation-defined. If
+the input item is a value converted earlier during the same program
+execution, the pointer that results shall compare equal to that value;
+otherwise, the behavior of the
+.BR %p
+conversion specification is undefined.
+.IP "\fRn\fP" 8
+No input is consumed. The application shall ensure that the
+corresponding argument is a pointer to the integer into which shall be
+written the number of bytes read from the input so far by this call to
+the
+\fIfscanf\fR()
+functions. Execution of a
+.BR %n
+conversion specification shall not increment the assignment count
+returned at the completion of execution of the function. No argument
+shall be converted, but one shall be consumed. If the conversion
+specification includes an assignment-suppressing character or a field
+width, the behavior is undefined.
+.IP "\fRC\fP" 8
+Equivalent to
+.BR lc .
+.IP "\fRS\fP" 8
+Equivalent to
+.BR ls .
+.IP "\fR%\fR" 8
+Matches a single
+.BR '%'
+character; no conversion or assignment occurs. The complete conversion
+specification shall be
+.BR %% .
+.P
+If a conversion specification is invalid, the behavior is undefined.
+.P
+The conversion specifiers
+.BR A ,
+.BR E ,
+.BR F ,
+.BR G ,
+and
+.BR X
+are also valid and shall be equivalent to
+.BR a ,
+.BR e ,
+.BR f ,
+.BR g ,
+and
+.BR x ,
+respectively.
+.P
+If end-of-file is encountered during input, conversion shall be
+terminated. If end-of-file occurs before any bytes matching the current
+conversion specification (except for
+.BR %n )
+have been read (other than leading white-space characters, where
+permitted), execution of the current conversion specification shall
+terminate with an input failure. Otherwise, unless execution of the
+current conversion specification is terminated with a matching failure,
+execution of the following conversion specification (if any) shall be
+terminated with an input failure.
+.P
+Reaching the end of the string in
+\fIsscanf\fR()
+shall be equivalent to encountering end-of-file for
+\fIfscanf\fR().
+.P
+If conversion terminates on a conflicting input, the offending input is
+left unread in the input. Any trailing white space (including
+<newline>
+characters) shall be left unread unless matched by a conversion
+specification. The success of literal matches and suppressed assignments
+is only directly determinable via the
+.BR %n
+conversion specification.
+.P
+The
+\fIfscanf\fR()
+and
+\fIscanf\fR()
+functions may mark the last data access timestamp of the file
+associated with
+.IR stream
+for update. The last data access timestamp shall be
+marked for update by the first successful execution of
+\fIfgetc\fR(),
+\fIfgets\fR(),
+\fIfread\fR(),
+\fIgetc\fR(),
+\fIgetchar\fR(),
+\fIgetdelim\fR(),
+\fIgetline\fR(),
+\fIgets\fR(),
+\fIfscanf\fR(),
+or
+\fIscanf\fR()
+using
+.IR stream
+that returns data not supplied by a prior call to
+\fIungetc\fR().
+.SH "RETURN VALUE"
+Upon successful completion, these functions shall return the number of
+successfully matched and assigned input items; this number can be zero
+in the event of an early matching failure. If the input ends before the
+first conversion (if any) has completed, and without a matching failure
+having occurred, EOF shall be returned. If an error occurs before the
+first conversion (if any) has completed, and without a matching failure
+having occurred, EOF shall be returned
+and
+.IR errno
+shall be set to indicate the error.
+If a read error occurs, the error indicator for the stream shall be set.
+.SH ERRORS
+For the conditions under which the
+\fIfscanf\fR()
+functions fail and may fail, refer to
+.IR "\fIfgetc\fR\^(\|)"
+or
+.IR "\fIfgetwc\fR\^(\|)".
+.P
+In addition, the
+\fIfscanf\fR()
+function shall fail if:
+.TP
+.BR EILSEQ
+Input byte sequence does not form a valid character.
+.TP
+.BR ENOMEM
+Insufficient storage space is available.
+.P
+In addition, the
+\fIfscanf\fR()
+function may fail if:
+.TP
+.BR EINVAL
+There are insufficient arguments.
+.LP
+.IR "The following sections are informative."
+.SH "EXAMPLES"
+The call:
+.sp
+.RS 4
+.nf
+
+int i, n; float x; char name[50];
+n = scanf("%d%f%s", &i, &x, name);
+.fi
+.P
+.RE
+.P
+with the input line:
+.sp
+.RS 4
+.nf
+
+25 54.32E-1 Hamster
+.fi
+.P
+.RE
+.P
+assigns to
+.IR n
+the value 3, to
+.IR i
+the value 25, to
+.IR x
+the value 5.432, and
+.IR name
+contains the string
+.BR \(dqHamster\(dq .
+.P
+The call:
+.sp
+.RS 4
+.nf
+
+int i; float x; char name[50];
+(void) scanf("%2d%f%*d %[0123456789]", &i, &x, name);
+.fi
+.P
+.RE
+.P
+with input:
+.sp
+.RS 4
+.nf
+
+56789 0123 56a72
+.fi
+.P
+.RE
+.P
+assigns 56 to
+.IR i ,
+789.0 to
+.IR x ,
+skips 0123, and places the string
+.BR \(dq56\e0\(dq
+in
+.IR name .
+The next call to
+\fIgetchar\fR()
+shall return the character
+.BR 'a' .
+.SS "Reading Data into an Array"
+.P
+The following call uses
+\fIfscanf\fR()
+to read three floating-point numbers from standard input into the
+.IR input
+array.
+.sp
+.RS 4
+.nf
+
+float input[3]; fscanf (stdin, "%f %f %f", input, input+1, input+2);
+.fi
+.P
+.RE
+.SH "APPLICATION USAGE"
+If the application calling
+\fIfscanf\fR()
+has any objects of type
+.BR wint_t
+or
+.BR wchar_t ,
+it must also include the
+.IR <wchar.h>
+header to have these objects defined.
+.P
+For functions that allocate memory as if by
+\fImalloc\fR(),
+the application should release such memory when it is no longer
+required by a call to
+\fIfree\fR().
+For
+\fIfscanf\fR(),
+this is memory allocated via use of the
+.BR 'm'
+assignment-allocation character.
+.SH RATIONALE
+This function is aligned with the ISO/IEC\ 9899:\|1999 standard, and in doing so a few
+``obvious'' things were not included. Specifically, the set of
+characters allowed in a scanset is limited to single-byte characters.
+In other similar places, multi-byte characters have been permitted, but
+for alignment with the ISO/IEC\ 9899:\|1999 standard, it has not been done here. Applications
+needing this could use the corresponding wide-character functions to
+achieve the desired results.
+.SH "FUTURE DIRECTIONS"
+None.
+.SH "SEE ALSO"
+.IR "Section 2.5" ", " "Standard I/O Streams",
+.IR "\fIfprintf\fR\^(\|)",
+.IR "\fIgetc\fR\^(\|)",
+.IR "\fIsetlocale\fR\^(\|)",
+.IR "\fIstrtod\fR\^(\|)",
+.IR "\fIstrtol\fR\^(\|)",
+.IR "\fIstrtoul\fR\^(\|)",
+.IR "\fIwcrtomb\fR\^(\|)"
+.P
+The Base Definitions volume of POSIX.1\(hy2017,
+.IR "Chapter 7" ", " "Locale",
+.IR "\fB<inttypes.h>\fP",
+.IR "\fB<langinfo.h>\fP",
+.IR "\fB<stdio.h>\fP",
+.IR "\fB<wchar.h>\fP"
+.\"
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1-2017, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 7, 2018 Edition,
+Copyright (C) 2018 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group.
+In the event of any discrepancy between this version and the original IEEE and
+The Open Group Standard, the original IEEE and The Open Group Standard
+is the referee document. The original Standard can be obtained online at
+http://www.opengroup.org/unix/online.html .
+.PP
+Any typographical or formatting errors that appear
+in this page are most likely
+to have been introduced during the conversion of the source files to
+man page format. To report such errors, see
+https://www.kernel.org/doc/man-pages/reporting_bugs.html .