scanf(3int)
Name
scanf, fscanf, sscanf − convert formatted input
Syntax
#include <stdio.h>
int scanf( format [, pointer ] ... )
char *format;
int fscanf( stream, format [, pointer ] ... )
FILE *stream;
char *format;
int sscanf( s, format [, pointer ] ... )
char *s, *format;
Description
The international functions scanf, fscanf, and sscanf are similar to the scanf standard I/O functions. The difference is that the international functions allow you to use the %digit$ conversion character in place of the I% character you use in the standard I/O functions. The digit is a decimal digit n from 1 to 9. The international functions apply conversions to the n th argument in the argument list, rather than to the next unused argument.
You can use % conversion character in the international functions. However, you cannot mix the % conversion character with the %digit$ conversion character in a single call.
In all cases, scanf uses the radix character and collating sequence that is defined by the last successful call to setlocale category LC_NUMERIC or LC_COLLATE. If the radix or collating sequence is undefined, the scanf function uses the C locale definitions.
International Environment
LC_COLLATEContains the user requirements for language, territory, and codeset for the character collation format. LC_COLLATE affects the behavior of regular expressions and the string collation functions in scanf. If LC_COLLATE is not defined in the current environment, LANG provides the necessary default.
LC_NUMERICIf this environment is set and valid, scanf uses the international language database named in the definition to determine radix character rules.
LANGIf this environment variable is set and valid scanf uses the international language database named in the definition to determine collation and character classification rules. If LC_NUMERIC or LC_COLLATE is defined, their definitions supersede the definition of LANG.
Restrictions
The scanf (libc) has been updated. The %n code now processes even if no further input remains to be scanned.
Examples
The following shows an example of using the scanf function:
scanf("%2$s %1$d", integer, string)
If the input is “ january 9 ”, the scanf function assigns 9 to integer and “january” to string.
Return Values
The scanf function returns the number of successfully matched and assigned input fields. This number can be zero if the scanf function encounters invalid input characters, as specified by the conversion specification, before it can assign input characters.
If the input ends before the first conflict or conversion, scanf returns EOF. These functions return EOF on end of input and a short count for missing or invalid data items.
Environment
In POSIX mode, the E, F, and X formats are treated the same as the e, f, and x formats, respectively; otherwise, the upper-case formats expect double, double, and long arguments, respectively.
See Also
intro(3int), setlocale(3), strtod(3), strtol(3), printf(3int), getc(3s), printf(3s), scanf(3s)
Guide to Developing International Software