wscanf(3)
NAME
- wscanf, fwscanf, swscanf, vwscanf, vswscanf, vfwscanf - wide
- character input format conversion
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <stdio.h> #include <wchar.h> int wscanf(const wchar_t * restrict format, ...); int fwscanf(FILE * restrict stream, const wchar_t * restrict format, ...); int swscanf(const wchar_t * restrict str, const wchar_t * restrict format, ...); #include <stdarg.h> int vwscanf(const wchar_t * restrict format, va_list ap); int vswscanf(const wchar_t * restrict str, const wchar_t * restrict format, va_list ap); int vfwscanf(FILE * restrict stream, const wchar_t * restrict format, va_list ap);
DESCRIPTION
- The wscanf() family of functions scans input according to a
- format as described below. This format may contain conversion
- specifiers; the results from such conversions, if any, are stored through
- the pointer arguments. The wscanf() function reads input from the stan
- dard input stream stdin, fwscanf() reads input from the stream pointer
- stream, and swscanf() reads its input from the wide character string
- pointed to by str. The vfwscanf() function is analogous to vfwprintf(3)
- and reads input from the stream pointer stream using a variable argu
- ment list of pointers (see stdarg(3)). The vwscanf() function scans a
- variable argument list from the standard input and the vswscanf() func
- tion scans it from a wide character string; these are analogous to the
- vwprintf() and vswprintf() functions respectively. Each successive pointer
- argument must correspond properly with each successive conversion
- specifier (but see the * conversion 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. Scanning also
- stops when an input conversion cannot be made (see below).
CONVERSIONS
- 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.
- hh Indicates that the conversion will be one of
- dioux or n
- and the next pointer is a pointer to a char
- (rather than int).
- h Indicates that the conversion will be one of
- dioux or n
- and the next pointer is a pointer to a short
- int (rather than int).
- l (ell) Indicates that the conversion will be one of
- dioux or n
- and the next pointer is a pointer to a long
- int (rather than int), that the conversion will be one
- of a, e, f, or g and the next pointer is a pointer to
- double (rather than float), or that the conversion will be
- one of c or s and the next pointer is a pointer to an ar
- ray of wchar_t (rather than char).
- ll (ell ell) Indicates that the conversion will be one of
- dioux or n
- and the next pointer is a pointer to a long
- long int (rather than int).
- L Indicates that the conversion will be one of
- a, e, f, or
- g and the next pointer is a pointer to long
- double.
- j Indicates that the conversion will be one of
- dioux or n
- and the next pointer is a pointer to a
- intmax_t (rather than int).
- t Indicates that the conversion will be one of
- dioux or n
- and the next pointer is a pointer to a
- ptrdiff_t (rather than int).
- z Indicates that the conversion will be one of
- dioux or n
- and the next pointer is a pointer to a
- size_t (rather than int).
- q (deprecated.) Indicates that the conversion
- will be one
- of dioux or n and the next pointer is a
- pointer to a long long int (rather than int).
- In addition to these flags, there may be an optional maximum
- field width, expressed as a decimal integer, between the % and the con
- version. 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.
- 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.
- 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 otherwise. Only characters that correspond to the base
- are used.
- o Matches an octal integer; the next pointer must be a
- pointer to
- unsigned int.
- u Matches an optionally signed decimal integer; the next
- pointer must
- be a pointer to unsigned int.
- x, X Matches an optionally signed hexadecimal integer; the
- next pointer
- must be a pointer to unsigned int.
- a, A, e, E, f, F, g, G
- Matches a floating-point number in the style of wc
- stod(3). The next pointer must be a pointer to float (unless l or L
- is specified.)
- s Matches a sequence of non-white-space wide characters;
- the next
- pointer must be a pointer to char, and the array must
- be large enough to accept the multibyte representation of all
- the sequence and the terminating NUL character. The input string
- stops at white space or at the maximum field width, whichever occurs
- first.
- If an l qualifier is present, the next pointer must be
- a pointer to wchar_t, into which the input will be placed.
- S The same as ls.
- c Matches a sequence of width count wide characters (de
- fault 1); the
- next pointer must be a pointer to char, and there must
- be enough room for the multibyte representation of all the char
- acters (no terminating NUL is added). The usual skip of leading
- white space is suppressed. To skip white space first, use an ex
- plicit space in the format.
- If an l qualifier is present, the next pointer must be
- a pointer to wchar_t, into which the input will be placed.
- C The same as lc.
- [ Matches a nonempty sequence of characters from the
- specified set of
- accepted characters; the next pointer must be a point
- er to char, and there must be enough room for the multibyte repre
- sentation of 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 particu
- lar 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. To include a hyphen in the
- set, make it the last character before the final close bracket; some
- implementations of wscanf() use ``A-Z'' to represent the range of
- characters between `A' and `Z'. The string ends with the appear
- ance of a character not in the (or, with a circumflex, in) set
- or when the field width runs out.
- If an l qualifier is present, the next pointer must be
- a pointer to wchar_t, into which the input will be placed.
- p Matches a pointer value (as printed by `%p' in
- wprintf(3)); the
- next pointer must be a pointer to void.
- n 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 int. This is not a conversion,
- although it can be suppressed with the * flag.
- The decimal point character is defined in the program's lo
- cale (category LC_NUMERIC).
- For backwards compatibility, a ``conversion'' of `% ' causes
- an immediate return of EOF.
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 in
- put 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 endof-file occurs. If an error or end-of-file occurs after
- conversion has begun, the number of conversions which were successfully
- completed is returned.
SEE ALSO
STANDARDS
- The fwscanf(), wscanf(), swscanf(), vfwscanf(), vwscanf()
- and vswscanf() functions conform to ISO/IEC 9899:1999 (``ISO C99'').
BUGS
- In addition to the bugs documented in scanf(3), wscanf()
- does not support the ``A-Z'' notation for specifying character ranges with
- the character class conversion (`%[').
- BSD July 5, 2003