Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ scanf(3S) — GENIX 4.1A

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

atof(3)

getc(3)

printf(3)



      SCANF(3S)               GENIX Programmer's Manual               SCANF(3S)



      NAME
           scanf, fscanf, sscanf - formatted input conversion

      SYNOPSIS
           #include <stdio.h>

           scanf(format [ , pointer ] . . .  )
           char *format;

           fscanf(stream, format [ , pointer ] . . .  )
           FILE *stream;
           char *format;

           sscanf(s, format [ , pointer ] . . .  )
           char *s, *format;

      DESCRIPTION
           Scanf reads from the standard input stream stdin.  Fscanf reads from
           the  named  input stream.  Sscanf reads from the character string s.
           Each function reads characters, interprets them according to a  for-
           mat, and stores the results in its arguments.  Each expects as argu-
           ments a control string format, described below, and a set of pointer
           arguments indicating where the converted input should be stored.

           The control string usually contains conversion specifications, which
           are  used  to direct interpretation of input sequences.  The control
           string may contain:

           1.  Blanks, tabs or newlines, which match optional  white  space  in
               the input.

           2.  An ordinary character (not %) which must match the next  charac-
               ter of the input stream.

           3.  Conversion specifications, consisting of  the  character  %,  an
               optional assignment suppressing character *, an optional numeri-
               cal maximum field width, and a conversion character.

           A conversion specification directs the conversion of the next  input
           field;  the  result  is  placed  in  the  variable pointed to by the
           corresponding argument, unless assignment suppression was  indicated
           by  *.   An  input field is defined as a string of non-space charac-
           ters; it extends to the next inappropriate character  or  until  the
           field width, if specified, is exhausted.

           The conversion character indicates the interpretation of  the  input
           field;  the corresponding pointer argument must usually be of a res-
           tricted type.  The following conversion characters are legal:

           %   a single `%' is expected in the input at this point; no  assign-
               ment is done.




      Printed 11/16/83                                                        1





      SCANF(3S)               GENIX Programmer's Manual               SCANF(3S)



           d   a decimal integer is expected; the corresponding argument should
               be an integer pointer.

           o   an octal integer is expected; the corresponding argument  should
               be a integer pointer.

           x   a hexadecimal integer is expected;  the  corresponding  argument
               should be an integer pointer.

           s   a character  string  is  expected;  the  corresponding  argument
               should be a character pointer pointing to an array of characters
               large enough to accept the string and a terminating `\0',  which
               will be added.  The input field is terminated by a space charac-
               ter or a newline.

           c   a character is expected; the corresponding argument should be  a
               character  pointer.   The  normal  skip over space characters is
               suppressed in this case; to read the next  non-space  character,
               try  `%1s'.   If a field width is given, the corresponding argu-
               ment should refer to a character array, and the indicated number
               of characters is read.

           e   a floating point number is expected; the next field is converted
           f   accordingly and stored through the corresponding argument, which
               should be a pointer to a float.  The input format  for  floating
               point  numbers is an optionally signed string of digits possibly
               containing a decimal point, followed  by  an  optional  exponent
               field  consisting  of an E or e followed by an optionally signed
               integer.

           [   indicates a string not to be delimited by space characters.  The
               left  bracket  is  followed  by  a set of characters and a right
               bracket; the characters between the brackets  define  a  set  of
               characters  making up the string.  If the first character is not
               circumflex (^), the input field  is  all  characters  until  the
               first  character  not  in  the  set between the brackets; if the
               first character after the left bracket is ^, the input field  is
               all characters until the first character which is in the remain-
               ing set of characters between the brackets.   The  corresponding
               argument must point to a character array.

           The conversion characters d, o and x may be capitalized or preceeded
           by l to indicate that a pointer to long rather than to int is in the
           argument list.  Similarly, the conversion characters e or f  may  be
           capitalized  or preceded by l to indicate a pointer to double rather
           than to float.  The conversion characters d, o and  x  may  be  pre-
           ceeded by h to indicate a pointer to short rather than to int.

           The scanf functions return the number of  successfully  matched  and
           assigned  input  items.   This  can be used to decide how many input
           items were found.  The constant EOF is returned upon end  of  input;
           note  that  this is different from 0, which means that no conversion



      Printed 11/16/83                                                        2





      SCANF(3S)               GENIX Programmer's Manual               SCANF(3S)



           was done; if conversion was intended, it was frustrated by an  inap-
           propriate character in the input.

           For example, the call

                     int i; float x; char name[50];
                     scanf("%d%f%s", &i, &x, name);

           with the input line

                25   54.32E-1  thompson

           will assign to i the value 25, x the value 5.432, and name will con-
           tain `thompson\0'.  Or,

                int i; float x; char name[50];
                scanf("%2d%f%*d%[1234567890]", &i, &x, name);

           with input

                56789 0123 56a72

           will assign 56 to i, 789.0 to x, skip `0123', and place  the  string
           `56\0' in name.  The next call to getchar will return `a'.

      SEE ALSO
           atof(3), getc(3), printf(3)

      DIAGNOSTICS
           The scanf functions return EOF on end of input, and  a  short  count
           for missing or illegal data items.

      BUGS
           The success of literal matches and  suppressed  assignments  is  not
           directly determinable.




















      Printed 11/16/83                                                        3



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026