| SCANF(3) | Library Functions Manual | SCANF(3) | 
scanf, fscanf,
  sscanf, vscanf,
  vsscanf, vfscanf —
#include <stdio.h>
int
  
  scanf(const
    char * restrict format,
    ...);
int
  
  fscanf(FILE
    * restrict stream, const
    char * restrict format,
    ...);
int
  
  sscanf(const
    char * restrict str,
    const char * restrict
    format, ...);
#include
    <stdarg.h>
int
  
  vscanf(const
    char * restrict format,
    va_list ap);
int
  
  vsscanf(const
    char * restrict str,
    const char * restrict
    format, va_list
    ap);
int
  
  vfscanf(FILE
    * restrict stream, const
    char * restrict format,
    va_list ap);
scanf() 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 scanf() function reads input from the
    standard input stream stdin,
    fscanf() reads input from the stream pointer
    stream, and sscanf() reads its
    input from the character string pointed to by str. The
    vfscanf() function is analogous to
    vfprintf(3) and reads input
    from the stream pointer stream using a variable
    argument list of pointers (see
    stdarg(3)). The
    vscanf() function scans a variable argument list
    from the standard input and the vsscanf() function
    scans it from a string; these are analogous to the
    vprintf() and vsprintf()
    functions respectively.
Each successive pointer argument must correspond
    properly with each successive conversion specifier (but see `suppression'
    below). All conversions are introduced by the %
    (percent sign) character. The format string may also
    contain 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).
% character introducing a conversion there
  may be a number of flag characters, as follows:
*hdioux
      or n and the next pointer is a pointer to a
      short int (rather than int).hhdioux
      or n and the next pointer is a pointer to a
      char (rather than int).jdioux
      or n and the next pointer is a pointer to an
      intmax_t (rather than int).ldioux or n and the next
      pointer is a pointer to a long int (rather than
      int), or that the conversion will be one of
      efg and the next pointer is a pointer to
      double (rather than float).lldioux
      or n and the next pointer is a pointer to a
      long long int (rather than int).qdioux
      or n and the next pointer is a pointer to a
      quad_t (rather than int).tdioux
      or n and the next pointer is a pointer to a
      ptrdiff_t (rather than int).zdioux
      or n and the next pointer is a pointer to a
      size_t (rather than int).Lefg and the
      next pointer is a pointer to long double.In addition to these flags, there may be an optional maximum field
    width, expressed as a decimal integer, between the %
    and the conversion. 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:
%dDld; this exists only for backwards
      compatibility.i0x’ or
      ‘0X’, in base 8 if it begins with
      ‘0’, and in base 10 otherwise. Only
      characters that correspond to the base are used.oOlo; this exists for backwards
      compatibility.uxXx.fef.gf.Ef.Gf.sNUL
      character. The input string stops at white space or at the maximum field
      width, whichever occurs first.cNUL is added). The usual skip of leading white
      space is suppressed. To skip white space first, use an explicit space in
      the format.[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 particular 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. The hyphen character
      - is also special; when placed between two other
      characters, it adds all intervening characters to the set. To include a
      hyphen, make it the last character before the final close bracket. For
      instance, ‘[^]0-9-]’ means the set
      `everything except close bracket, zero through nine, and hyphen'. The
      string ends with the appearance of a character not in the (or, with a
      circumflex, in) set or when the field width runs out.p%p’ in
      printf(3)); the next pointer
      must be a pointer to void.n*
    flag.For backwards compatibility, other conversion characters (except
    ‘\0’) are taken as if they were
    ‘%d’ or, if uppercase,
    ‘%ld’, and a `conversion' of
    ‘%\0’ causes an immediate return of
    EOF.
The format string specifier macros described in inttypes(3) should be used for the standard “C99” fixed-size integers documented in stdint(3).
%d’ conversion. The
  value EOF is returned if an input failure occurs
  before any conversion such as an end-of-file occurs. If an error or
  end-of-file occurs after conversion has begun, the number of conversions which
  were successfully completed is returned.
fscanf(), scanf(),
  and sscanf() conform to ISO/IEC
  9899:1990 (“ISO C90”). The
  %j, %t and
  %z conversion format modifiers conform to
  ISO/IEC 9899:1999 (“ISO C99”).
  The vfscanf(), vscanf() and
  vsscanf() functions conform to
  ISO/IEC 9899:1999 (“ISO C99”).
vscanf(),
  vsscanf() and vfscanf()
  appeared in 4.4BSD or even
  4.3BSD.
%f and %d are implicitly
  %512f and %512d.
| March 21, 2010 | NetBSD 10.0 |