dwww Home | Manual pages | Find package

scanf(3)                    Library Functions Manual                   scanf(3)

NAME
       scanf, fscanf, vscanf, vfscanf - input FILE format conversion

LIBRARY
       Standard C library (libc, -lc)

SYNOPSIS
       #include <stdio.h>

       int scanf(const char *restrict format, ...);
       int fscanf(FILE *restrict stream,
                  const char *restrict format, ...);

       #include <stdarg.h>

       int vscanf(const char *restrict format, va_list ap);
       int vfscanf(FILE *restrict stream,
                  const char *restrict format, va_list ap);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       vscanf(), vfscanf():
           _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

DESCRIPTION
       The  scanf()  family  of functions scans formatted input like sscanf(3),
       but read from a FILE.  It is very difficult to use these functions  cor-
       rectly,  and it is preferable to read entire lines with fgets(3) or get-
       line(3) and parse them later with sscanf(3) or  more  specialized  func-
       tions such as strtol(3).

       The  scanf()  function  reads input from the standard input stream stdin
       and fscanf() reads input from the stream pointer stream.

       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 is analogous  to  vprintf(3)  and
       reads from the standard input.

RETURN VALUE
       On  success,  these  functions return the number of input items success-
       fully matched and assigned; this can be fewer than provided for, or even
       zero, in the event of an early matching failure.

       The value EOF is returned if the end of input is reached  before  either
       the  first  successful  conversion or a matching failure occurs.  EOF is
       also returned if a read error occurs, in which case the error  indicator
       for  the stream (see ferror(3)) is set, and errno is set to indicate the
       error.

ERRORS
       EAGAIN The file descriptor underlying stream is marked nonblocking,  and
              the read operation would block.

       EBADF  The file descriptor underlying stream is invalid, or not open for
              reading.

       EILSEQ Input byte sequence does not form a valid character.

       EINTR  The read operation was interrupted by a signal; see signal(7).

       EINVAL Not enough arguments; or format is NULL.

       ENOMEM Out of memory.

ATTRIBUTES
       For an explanation of the terms used in this section, see attributes(7).
       ┌─────────────────────────────────────┬───────────────┬────────────────┐
       │ Interface                           Attribute     Value          │
       ├─────────────────────────────────────┼───────────────┼────────────────┤
       │ scanf(), fscanf(), vscanf(),        │ Thread safety │ MT-Safe locale │
       │ vfscanf()                           │               │                │
       └─────────────────────────────────────┴───────────────┴────────────────┘

STANDARDS
       C11, POSIX.1-2008.

HISTORY
       C99, POSIX.1-2001.

CAVEATS
       These  functions  make  it  difficult to distinguish newlines from other
       white space, This is especially problematic  with  line-buffered  input,
       like the standard input stream.

       These  functions  can't report errors after the last non-suppressed con-
       version specification.

BUGS
       It is impossible to accurately know how many characters these  functions
       have  consumed  from the input stream, since they only report the number
       of successful conversions.  For example,  if  the  input  is  "123\n a",
       scanf("%d %d",  &a,  &b)  will  consume the digits, the newline, and the
       space, but not the letter a.  This makes it difficult  to  recover  from
       invalid input.

SEE ALSO
       fgets(3), getline(3), sscanf(3)

Linux man-pages 6.9.1              2024-06-15                          scanf(3)

Generated by dwww version 1.16 on Sat Dec 6 22:33:07 CET 2025.