INTRO(3S) — STANDARD I/O LIBRARY
NAME
intro, 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 I/O buffering scheme. The in-line macros getc and putc(3S) handle characters quickly. The macros getchar and putchar, and the higher level routines fgetc, getw, gets, fgets, scanf, fscanf, fread, fputc, putw, puts, fputs, printf, fprintf, fwrite 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, and is declared to be a pointer to a defined type FILE. fopen(3S) 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> include file and associated with the standard open files:
stdin standard input file
stdout standard output file
stderr standard error file
A constant NULL (0) designates a nonexistent pointer.
An integer constant EOF (−1) is returned upon end-of-file or error by most integer functions that deal with streams (see the individual descriptions for details).
Any module that uses this package must include the header file of pertinent macro definitions, as follows:
#include <stdio.h>
The functions and constants mentioned in sections labeled 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, putchar, feof, ferror, fileno, and clearerr.
SEE ALSO
open(2V), close(2), lseek(2), pipe(2), read(2V), write(2V), ctermid(3S), cuserid(3S), fclose(3S), ferror(3S), fopen(3S), fread(3S), fseek(3S), getc(3S), gets(3S), popen(3S), printf(3S), putc(3S), puts(3S), scanf(3S), setbuf(3S), system(3), tmpfile(3S), tmpnam(3S), ungetc(3S).
DIAGNOSTICS
The value EOF is returned uniformly to indicate that a FILE pointer has not been initialized with fopen, input (output) has been attempted on an output (input) stream, or a FILE pointer designates corrupt or otherwise unintelligible FILE data.
For purposes of efficiency, this implementation of the standard 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 read(2V) 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 read(2V) 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 necessary to fflush (see fclose(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 vfork.
LIST OF FUNCTIONS
NameAppears on PageDescription
clearerrferror(3S)stream status inquiries
ctermidctermid(3S)generate filename for terminal
cuseridcuserid(3S)get character login name of user
fclosefclose(3S)close or flush a stream
fdopenfopen(3S)open a stream
feofferror(3S)stream status inquiries
ferrorferror(3S)stream status inquiries
fflushfclose(3S)close or flush a stream
fgetcgetc(3S)get character or integer from stream
fgetsgets(3S)get a string from a stream
filenoferror(3S)stream status inquiries
fopenfopen(3S)open a stream
fprintfprintf(3S)formatted output conversion
fputcputc(3S)put character or word on a stream
fputsputs(3S)put a string on a stream
freadfread(3S)buffered binary input/output
freopenfopen(3S)open a stream
fscanfscanf(3S)formatted input conversion
fseekfseek(3S)reposition a stream
ftellfseek(3S)reposition a stream
fwritefread(3S)buffered binary input/output
getcgetc(3S)get character or integer from stream
getchargetc(3S)get character or integer from stream
getsgets(3S)get a string from a stream
getwgetc(3S)get character or integer from stream
pclosepopen(3S)initiate I/O to/from a process
popenpopen(3S)initiate I/O to/from a process
printfprintf(3S)formatted output conversion
putcputc(3S)put character or word on a stream
putcharputc(3S)put character or word on a stream
putsputs(3S)put a string on a stream
putwputc(3S)put character or word on a stream
rewindfseek(3S)reposition a stream
scanfscanf(3S)formatted input conversion
setbufsetbuf(3S)assign buffering to a stream
setbuffersetbuf(3S)assign buffering to a stream
setlinebufsetbuf(3S)assign buffering to a stream
sprintfprintf(3S)formatted output conversion
sscanfscanf(3S)formatted input conversion
ungetcungetc(3S)push character back into input stream
vfprintfvprintf(3S)print formatted varargs output
vprintfvprintf(3S)print formatted varargs output
vsprintfvprintf(3S)print formatted varargs output
Sun Release 3.2 — Last change: 20 August 1985