4.3BSD-UWisc/man/cat3/stdio.3s




STDIO(3S)           UNIX Programmer's Manual            STDIO(3S)



NAME
     stdio - standard buffered input/output package

SYNOPSIS
     #include <stdio.h>

     FILE *stdin;
     FILE *stdout;
     FILE *stderr;

DESCRIPTION
     The functions described in section 3S constitute a user-
     level buffering scheme.  The in-line macros _g_e_t_c and
     _p_u_t_c(3S) handle characters quickly.  The higher level rou-
     tines _g_e_t_s, _f_g_e_t_s, _s_c_a_n_f, _f_s_c_a_n_f, _f_r_e_a_d, _p_u_t_s, _f_p_u_t_s,
     _p_r_i_n_t_f, _f_p_r_i_n_t_f, _f_w_r_i_t_e all use _g_e_t_c and _p_u_t_c; they can be
     freely intermixed.

     A file with associated buffering is called a _s_t_r_e_a_m, and is
     declared to be a pointer to a defined type FILE.  _F_o_p_e_n(3S)
     creates certain descriptive data for a stream and returns a
     pointer to designate the stream in all further transactions.
     There are three normally open streams with constant pointers
     declared in the include file and associated with the stan-
     dard open files:

     stdin     standard input file
     stdout    standard output file
     stderr    standard error file

     A constant `pointer' NULL (0) designates no stream at all.

     An integer constant EOF (-1) is returned upon end of file or
     error by integer functions that deal with streams.

     Any routine that uses the standard input/output package must
     include the header file <_s_t_d_i_o._h> of pertinent macro defini-
     tions.  The functions and constants mentioned in sections
     labeled 3S are declared in the include file and need no
     further declaration.  The constants, and the following
     `functions' are implemented as macros; redeclaration of
     these names is perilous: _g_e_t_c, _g_e_t_c_h_a_r, _p_u_t_c, _p_u_t_c_h_a_r, _f_e_o_f,
     _f_e_r_r_o_r, _f_i_l_e_n_o.

SEE ALSO
     open(2), close(2), read(2), write(2), fread(3S), fseek(3S),
     f*(3S)

DIAGNOSTICS
     The value EOF is returned uniformly to indicate that a FILE
     pointer has not been initialized with _f_o_p_e_n, input (output)
     has been attempted on an output (input) stream, or a FILE



Printed 12/27/86          May 13, 1986                          1






STDIO(3S)           UNIX Programmer's Manual            STDIO(3S)



     pointer designates corrupt or otherwise unintelligible FILE
     data.

     For purposes of efficiency, this implementation of the stan-
     dard library has been changed to line buffer output to a
     terminal by default and attempts to do this transparently by
     flushing the output whenever a _r_e_a_d(2) from the standard
     input is necessary.  This is almost always transparent, but
     may cause confusion or malfunctioning of programs which use
     standard i/o routines but use _r_e_a_d(2) themselves to read
     from the standard input.

     In cases where a large amount of computation is done after
     printing part of a line on an output terminal, it is neces-
     sary to _f_f_l_u_s_h(3S) the standard output before going off and
     computing so that the output will appear.

BUGS
     The standard buffered functions do not interact well with
     certain other library and system functions, especially _v_f_o_r_k
     and _a_b_o_r_t.

LIST OF FUNCTIONS
     _N_a_m_e        _A_p_p_e_a_r_s _o_n _P_a_g_e    _D_e_s_c_r_i_p_t_i_o_n
9     clearerr      ferror.3s    stream status inquiries
     fclose        fclose.3s    close or flush a stream
     fdopen        fopen.3s     open a stream
     feof          ferror.3s    stream status inquiries
     ferror        ferror.3s    stream status inquiries
     fflush        fclose.3s    close or flush a stream
     fgetc         getc.3s      get character or word from stream
     fgets         gets.3s      get a string from a stream
     fileno        ferror.3s    stream status inquiries
     fopen         fopen.3s     open a stream
     fprintf       printf.3s    formatted output conversion
     fputc         putc.3s      put character or word on a stream
     fputs         puts.3s      put a string on a stream
     fread         fread.3s     buffered binary input/output
     freopen       fopen.3s     open a stream
     fscanf        scanf.3s     formatted input conversion
     fseek         fseek.3s     reposition a stream
     ftell         fseek.3s     reposition a stream
     fwrite        fread.3s     buffered binary input/output
     getc          getc.3s      get character or word from stream
     getchar       getc.3s      get character or word from stream
     gets          gets.3s      get a string from a stream
     getw          getc.3s      get character or word from stream
     printf        printf.3s    formatted output conversion
     putc          putc.3s      put character or word on a stream
     putchar       putc.3s      put character or word on a stream
     puts          puts.3s      put a string on a stream
     putw          putc.3s      put character or word on a stream



Printed 12/27/86          May 13, 1986                          2


9


STDIO(3S)           UNIX Programmer's Manual            STDIO(3S)



     rewind        fseek.3s     reposition a stream
     scanf         scanf.3s     formatted input conversion
     setbuf        setbuf.3s    assign buffering to a stream
     setbuffer     setbuf.3s    assign buffering to a stream
     setlinebuf    setbuf.3s    assign buffering to a stream
     sprintf       printf.3s    formatted output conversion
     sscanf        scanf.3s     formatted input conversion
     ungetc        ungetc.3s    push character back into input stream















































Printed 12/27/86          May 13, 1986                          3