#### 12.14.8 Formatted Input Functions

Here are the descriptions of the functions for performing formatted input. Prototypes for these functions are in the header file `stdio.h`.

— Function: int scanf (const char *template, ...)

> Preliminary: | MT-Safe locale | AS-Unsafe corrupt heap | AC-Unsafe mem lock corrupt | See POSIX Safety Concepts.

> The `scanf` function reads formatted input from the stream `stdin` under the control of the template string template. The optional arguments are pointers to the places which receive the resulting values.

> The return value is normally the number of successful assignments. If an end-of-file condition is detected before any matches are performed, including matches against whitespace and literal characters in the template, then `EOF` is returned.

— Function: int wscanf (const wchar_t *template, ...)

> Preliminary: | MT-Safe locale | AS-Unsafe corrupt heap | AC-Unsafe mem lock corrupt | See POSIX Safety Concepts.

> The `wscanf` function reads formatted input from the stream `stdin` under the control of the template string template. The optional arguments are pointers to the places which receive the resulting values.

> The return value is normally the number of successful assignments. If an end-of-file condition is detected before any matches are performed, including matches against whitespace and literal characters in the template, then `WEOF` is returned.

— Function: int fscanf (FILE *stream, const char *template, ...)

> Preliminary: | MT-Safe locale | AS-Unsafe corrupt heap | AC-Unsafe mem lock corrupt | See POSIX Safety Concepts.

> This function is just like `scanf`, except that the input is read from the stream stream instead of `stdin`.

— Function: int fwscanf (FILE *stream, const wchar_t *template, ...)

> Preliminary: | MT-Safe locale | AS-Unsafe corrupt heap | AC-Unsafe mem lock corrupt | See POSIX Safety Concepts.

> This function is just like `wscanf`, except that the input is read from the stream stream instead of `stdin`.

— Function: int sscanf (const char *s, const char *template, ...)

> Preliminary: | MT-Safe locale | AS-Unsafe heap | AC-Unsafe mem | See POSIX Safety Concepts.

> This is like `scanf`, except that the characters are taken from the null-terminated string s instead of from a stream. Reaching the end of the string is treated as an end-of-file condition.

> The behavior of this function is undefined if copying takes place between objects that overlap—for example, if s is also given as an argument to receive a string read under control of the ‘`%s`’, ‘`%S`’, or ‘`%[`’ conversion.

— Function: int swscanf (const wchar_t *ws, const wchar_t *template, ...)

> Preliminary: | MT-Safe locale | AS-Unsafe heap | AC-Unsafe mem | See POSIX Safety Concepts.

> This is like `wscanf`, except that the characters are taken from the null-terminated string ws instead of from a stream. Reaching the end of the string is treated as an end-of-file condition.

> The behavior of this function is undefined if copying takes place between objects that overlap—for example, if ws is also given as an argument to receive a string read under control of the ‘`%s`’, ‘`%S`’, or ‘`%[`’ conversion.