Intro -- standard buffered input/output package


   #include <stdio.h>

FILE *stdin, *stdout, *stderr;


This section describes the routines in the standard buffered input/output package provided as part of the libc library. These constitute an efficient, user-level I/O buffering scheme. The in-line macros getc and putc handle characters quickly. The macros getchar and putchar, and the higher-level routines fgetc, fgets, fprintf, fputc, fputs, fread, fscanf, fwrite, gets, getw, printf, puts, putw, and scanf all use or act as if they use getc and putc; they can be freely intermixed.

A file with associated buffering is called a stream (see intro(3)) and is declared to be a pointer to a defined type FILE. fopen creates certain descriptive data for a stream and returns a pointer to designate the stream in all further transactions. Normally, there are three open streams with constant pointers declared in the stdio.h header file and associated with the standard open files:

standard input file

standard output file

standard error file

A constant null designates a null pointer.

An integer-constant EOF (-1) is returned at end-of-file or error by most integer functions that deal with streams (see the individual descriptions for details).

An integer constant BUFSIZ is a suggested buffer size for use in setvbuf() and the expected size for setbuf().

An integer constant FILENAME_MAX specifies the size needed for an array of char large enough to hold the longest file name string that the implementation guarantees can be opened.

The number of open streams available to a process is limited only by the maximum number of files that the process may open. This limitation is dependent on the operating system.

Any program that uses this package must include the header file of pertinent macro definitions, as follows:

   #include <stdio.h>

The functions and constants mentioned in the entries of sub-class 3S of this manual are declared in that header file and need no further declaration. The constants and the following ``functions'' are implemented as macros (redeclaration of these names is perilous): getc, getchar, putc, and putchar. There are also function versions of getc, getchar, putc, and putchar.

Output streams, except for the standard error stream stderr, are by default buffered if the output refers to a file and line-buffered if the output refers to a terminal. The standard error output stream stderr is by default unbuffered, but use of freopen (see fopen(3S)) will cause it to become buffered or line-buffered. When an output stream is unbuffered, information is queued for writing on the destination file or terminal as soon as written; when it is buffered, many characters are saved up and written as a block. When it is line-buffered, each line of output is queued for writing on the destination terminal as soon as the line is completed (that is, as soon as a new-line character is written or terminal input is requested). setbuf or setvbuf (both described in setbuf(3S)) may be used to change the stream's buffering strategy.


Invalid stream pointers usually cause grave disorder, possibly including program termination. Individual function descriptions describe the possible error conditions.


close(2), ctermid(3S), cuserid(3S), fclose(3S), ferror(3S), fopen(3S), fprintf(3S), fread(3S), fscanf(3S), fseek(3S), getc(3S), gets(3S), lseek(2), open(2), pipe(2), popen(3S), putc(3S), puts(3S), read(2), setbuf(3S), system(3S), tmpfile(3S), tmpnam(3S), ungetc(3S), write(2)


The stdio included in UnixWare provides thread safety as well as improved performance and compatibility for existing applications. Applications should not mix different stdio implementations.

Applications should restrict their use of the standard I/O package to the interfaces documented on the Section 3S manual pages. They should not depend on individual members of the internal structures found in stdio.h.

Standards compliance

The following are comformant with X/Open Portability Guide, Issue 4, Version 2 (UNIX95): clearerr(3S), ctermid(3S), cuserid(3S), fclose(3S), fdopen(3S), feof(3S), ferror(3S), fflush(3S), fgetc(3S), fgets(3S), fgetwc(3S), fileno(3S), fopen(3S), fprintf(3S), fputc(3S), fputs(3S), fputwc(3S), fread(3S), freopen(3S), fscanf(3S), fseek(3S), ftell(3S), fwrite(3S), getc(3S), getchar(3S), gets(3S), getw(3S), getwc(3S), getwchar(3S), pclose(3S), popen(3S), printf(3S), putc(3S), putchar(3S), puts(3S), putw(3S), putwc(3S), putwchar(3S), rewind(3S), scanf(3S), setbuf(3S), setvbuf(3S), sprintf(3S), sscanf(3S), tempnam(3S), tmpfile(3S), tmpnam(3S), ungetc(3S), ungetwc(3S), vfprintf(3S)
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004