STDIO(3S) UNIX Programmer's Manual STDIO(3S) NAME stdio - standard buffered input/output package SYNOPSIS #include FILE *stdin; FILE *stdout; FILE *stderr; DESCRIPTION The functions described in Sections 3S constitute an effi- cient user-level buffering scheme. The in-line macros _g_e_t_c and _p_u_t_c(3) handle characters quickly. The higher level routines _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(3) 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 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) 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 pointer designates corrupt or otherwise unintelligible FILE Printed 12/9/82 1 STDIO(3S) UNIX Programmer's Manual STDIO(3S) 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(3) the standard output before going off and computing so that the output will appear. Printed 12/9/82 2