222 lines
5.7 KiB
Plaintext
222 lines
5.7 KiB
Plaintext
.\" @(#)intro.3s 1.1 92/07/30 SMI; from UCB 4.2
|
|
.TH INTRO 3S "20 August 1985"
|
|
.SH NAME
|
|
intro, stdio \- standard buffered input/output package
|
|
.SH SYNOPSIS
|
|
.B #include <stdio.h>
|
|
.LP
|
|
.SM
|
|
.B FILE
|
|
.B *stdin;
|
|
.br
|
|
.SM
|
|
.B FILE
|
|
.B *stdout;
|
|
.br
|
|
.SM
|
|
.B FILE
|
|
.B *stderr;
|
|
.SH DESCRIPTION
|
|
.IX introduction "standard I/O library functions"
|
|
.IX "standard I/O library functions, introduction to"
|
|
.IX "buffered I/O library functions, introduction to"
|
|
.IX "library functions" "introduction to standard I/O"
|
|
The functions described in section 3S constitute a user-level I/O buffering
|
|
scheme. The in-line macros
|
|
.I getc
|
|
and
|
|
.IR putc (3S)
|
|
handle characters quickly. The macros
|
|
.IR getchar " and " putchar ,
|
|
and the higher level routines
|
|
.IR fgetc ,
|
|
.IR getw ,
|
|
.IR gets ,
|
|
.IR fgets ,
|
|
.IR scanf ,
|
|
.IR fscanf ,
|
|
.IR fread ,
|
|
.IR fputc ,
|
|
.IR putw ,
|
|
.IR puts ,
|
|
.IR fputs ,
|
|
.IR printf ,
|
|
.IR fprintf ,
|
|
.IR fwrite
|
|
all use or act as if they use
|
|
.I getc
|
|
and
|
|
.IR putc ;
|
|
they can be freely intermixed.
|
|
.LP
|
|
A file with associated buffering is called a
|
|
.IR stream ,
|
|
and is declared to be a pointer to a defined type
|
|
.SM
|
|
.BR FILE .
|
|
.IR 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
|
|
.B <stdio.h>
|
|
include file and associated with the standard open files:
|
|
.TP 10n
|
|
.B stdin
|
|
standard input file
|
|
.br
|
|
.ns
|
|
.TP
|
|
.B stdout
|
|
standard output file
|
|
.br
|
|
.ns
|
|
.TP
|
|
.B stderr
|
|
standard error file
|
|
.LP
|
|
A constant
|
|
.SM
|
|
.B NULL
|
|
(0)
|
|
designates a nonexistent pointer.
|
|
.LP
|
|
An integer constant
|
|
.SM
|
|
.B EOF
|
|
(\-1) is returned upon end-of-file or error by most integer functions that
|
|
deal with streams
|
|
(see the individual descriptions for details).
|
|
.LP
|
|
Any module that uses this package
|
|
must include the header file of pertinent macro definitions,
|
|
as follows:
|
|
.PP
|
|
.RS
|
|
#include \|<stdio.h>
|
|
.RE
|
|
.PP
|
|
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:
|
|
.IR getc ,
|
|
.IR getchar ,
|
|
.IR putc ,
|
|
.IR putchar ,
|
|
.IR feof ,
|
|
.IR ferror ,
|
|
.IR fileno ,
|
|
and
|
|
.IR clearerr .
|
|
.SH "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).
|
|
.SH DIAGNOSTICS
|
|
The value
|
|
.SM
|
|
.B EOF
|
|
is returned uniformly to indicate that a
|
|
.SM
|
|
.B FILE
|
|
pointer has not been initialized with
|
|
.IR fopen ,
|
|
input (output) has been attempted on an output (input) stream, or a
|
|
.SM
|
|
.B FILE
|
|
pointer designates corrupt or otherwise unintelligible
|
|
.SM
|
|
.B FILE
|
|
data.
|
|
.LP
|
|
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
|
|
.IR 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
|
|
.IR read (2V)
|
|
themselves to read from the standard input.
|
|
.LP
|
|
In cases where a large amount of computation is done after printing
|
|
part of a line on an output terminal, it is necessary to
|
|
.IR fflush
|
|
(see
|
|
.IR fclose (3S))
|
|
the standard output before going off and computing so that the output
|
|
will appear.
|
|
.SH BUGS
|
|
The standard buffered functions do not interact well with certain other
|
|
library and system functions, especially \fIvfork\fP.
|
|
.SH "LIST OF FUNCTIONS"
|
|
.sp 2
|
|
.nf
|
|
.ta \w'setlinebuf'u+2n +\w'setbuf.3s'u+10n
|
|
\fIName\fP \fIAppears on Page\fP \fIDescription\fP
|
|
.ta \w'setlinebuf'u+4n +\w'setbuf.3s'u+4n
|
|
|
|
clearerr ferror(3S) stream status inquiries
|
|
ctermid ctermid(3S) generate filename for terminal
|
|
cuserid cuserid(3S) get character login name of user
|
|
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 integer 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 integer from stream
|
|
getchar getc(3S) get character or integer from stream
|
|
gets gets(3S) get a string from a stream
|
|
getw getc(3S) get character or integer from stream
|
|
pclose popen(3S) initiate I/O to/from a process
|
|
popen popen(3S) initiate I/O to/from a process
|
|
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
|
|
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
|
|
vfprintf vprintf(3S) print formatted varargs output
|
|
vprintf vprintf(3S) print formatted varargs output
|
|
vsprintf vprintf(3S) print formatted varargs output
|
|
|
|
.fi
|