xref: /netbsd/lib/libc/stdio/stdio.3 (revision bf9ec67e)
1.\"	$NetBSD: stdio.3,v 1.14 2002/02/07 07:00:27 ross Exp $
2.\"
3.\" Copyright (c) 1990, 1991, 1993
4.\"	The Regents of the University of California.  All rights reserved.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\"    notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice, this list of conditions and the following disclaimer in the
13.\"    documentation and/or other materials provided with the distribution.
14.\" 3. All advertising materials mentioning features or use of this software
15.\"    must display the following acknowledgement:
16.\"	This product includes software developed by the University of
17.\"	California, Berkeley and its contributors.
18.\" 4. Neither the name of the University nor the names of its contributors
19.\"    may be used to endorse or promote products derived from this software
20.\"    without specific prior written permission.
21.\"
22.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32.\" SUCH DAMAGE.
33.\"
34.\"     @(#)stdio.3	8.7 (Berkeley) 4/19/94
35.\"
36.Dd April 19, 1994
37.Dt STDIO 3
38.Os
39.Sh NAME
40.Nm stdio
41.Nd standard input/output library functions
42.Sh LIBRARY
43.Lb libc
44.Sh SYNOPSIS
45.Fd #include \*[Lt]stdio.h\*[Gt]
46.Fd FILE *stdin;
47.Fd FILE *stdout;
48.Fd FILE *stderr;
49.Sh DESCRIPTION
50The standard
51.Tn I/O
52library provides a simple and efficient buffered stream
53.Tn I/O
54interface.
55Input and output is mapped into logical data streams
56and the physical
57.Tn I/O
58characteristics are concealed. The functions and macros are listed
59below; more information is available from the individual man pages.
60.Pp
61A stream is associated with an external file (which may be a physical
62device) by
63.Em opening
64a file, which may involve creating a new file. Creating an
65existing file causes its former contents to be discarded.
66If a file can support positioning requests (such as a disk file, as opposed
67to a terminal) then a
68.Em file position indicator
69associated with the stream is positioned at the start of the file (byte
70zero), unless the file is opened with append mode. If append mode
71is used, the position indicator will be placed the end-of-file.
72The position indicator is maintained by subsequent reads, writes
73and positioning requests. All input occurs as if the characters
74were read by successive calls to the
75.Xr fgetc 3
76function; all output takes place as if all characters were
77read by successive calls to the
78.Xr fputc 3
79function.
80.Pp
81A file is disassociated from a stream by
82.Em closing
83the file.
84Output streams are flushed (any unwritten buffer contents are transferred
85to the host environment) before the stream is disassociated from the file.
86The value of a pointer to a
87.Dv FILE
88object is indeterminate after a file is closed (garbage).
89.Pp
90A file may be subsequently reopened, by the same or another program
91execution, and its contents reclaimed or modified (if it can be repositioned
92at the start).  If the main function returns to its original caller, or
93the
94.Xr exit 3
95function is called, all open files are closed (hence all output
96streams are flushed) before program termination.  Other methods
97of program termination, such as
98.Xr abort 3
99do not bother about closing files properly.
100.Pp
101This implementation needs and makes
102no distinction between
103.Dq text
104and
105.Dq binary
106streams.
107In effect, all streams are binary.
108No translation is performed and no extra padding appears on any stream.
109.Pp
110At program startup, three streams are predefined and need not be
111opened explicitly:
112.Bl -bullet -compact -offset indent
113.It
114.Em standard input
115(for reading conventional input),
116.It
117.Em standard output
118(for writing conventional output), and
119.It
120.Em standard error
121(for writing diagnostic output).
122.El
123These streams are abbreviated
124.Em stdin , stdout
125and
126.Em stderr .
127Initially, the standard error stream
128is unbuffered; the standard input and output streams are
129fully buffered if and only if the streams do not refer to
130an interactive or
131.Dq terminal
132device, as determined by the
133.Xr isatty 3
134function.
135In fact,
136.Em all
137freshly-opened streams that refer to terminal devices
138default to line buffering, and
139pending output to such streams is written automatically
140whenever an such an input stream is read.
141Note that this applies only to
142.Dq "true reads" ;
143if the read request can be satisfied by existing buffered data,
144no automatic flush will occur.
145In these cases,
146or when a large amount of computation is done after printing
147part of a line on an output terminal, it is necessary to
148.Xr fflush 3
149the standard output before going off and computing so that the output
150will appear.
151Alternatively, these defaults may be modified via the
152.Xr setvbuf 3
153function.
154.Pp
155The
156.Nm
157library is a part of the library
158.Pa libc.a
159and routines are automatically loaded as needed by compilers such
160as
161.Xr cc 1 .
162The
163.Tn SYNOPSIS
164sections of the following manual pages indicate which include files
165are to be used, what the compiler declaration for the function
166looks like and which external variables are of interest.
167.Pp
168The following are defined as macros; these names may not be re-used
169without first removing their current definitions with
170.Dv #undef :
171.Dv BUFSIZ ,
172.Dv EOF ,
173.Dv FILENAME_MAX ,
174.Dv FOPEN_MAX ,
175.Dv L_cuserid ,
176.Dv L_ctermid ,
177.Dv L_tmpnam ,
178.Dv NULL ,
179.Dv SEEK_END ,
180.Dv SEEK_SET ,
181.Dv SEE_CUR ,
182.Dv TMP_MAX ,
183.Fn clearerr ,
184.Fn feof ,
185.Fn ferror ,
186.Fn fileno ,
187.Fn freopen ,
188.Fn fwopen ,
189.Fn getc ,
190.Fn getchar ,
191.Fn putc ,
192.Fn putchar ,
193.Dv stderr ,
194.Dv stdin ,
195.Dv stdout .
196Function versions of the macro functions
197.Fn feof ,
198.Fn ferror ,
199.Fn clearerr ,
200.Fn fileno ,
201.Fn getc ,
202.Fn getchar ,
203.Fn putc ,
204and
205.Fn putchar
206exist and will be used if the macros definitions are explicitly removed.
207.Sh SEE ALSO
208.Xr close 2 ,
209.Xr open 2 ,
210.Xr read 2 ,
211.Xr write 2
212.Sh STANDARDS
213The
214.Nm
215library conforms to
216.St -ansiC .
217.Sh LIST OF FUNCTIONS
218.Bl -column "Description"
219.Sy Function	Description
220clearerr	check and reset stream status
221fclose	close a stream
222fdopen	stream open functions
223feof	check and reset stream status
224ferror	check and reset stream status
225fflush	flush a stream
226fgetc	get next character or word from input stream
227fgetln	get a line from a stream
228fgetpos	reposition a stream
229fgets	get a line from a stream
230fgetwc	get next wide character from input stream
231fileno	check and reset stream status
232fopen	stream open functions
233fprintf	formatted output conversion
234fpurge	flush a stream
235fputc	output a character or word to a stream
236fputs	output a line to a stream
237fputwc	output a wide character to a stream
238fread	binary stream input/output
239freopen	stream open functions
240fropen	open a stream
241fscanf	input format conversion
242fseek	reposition a stream
243fsetpos	reposition a stream
244ftell	reposition a stream
245funopen	open a stream
246fwide	set/get orientation of a stream
247fwopen	open a stream
248fwrite	binary stream input/output
249getc	get next character or word from input stream
250getchar	get next character or word from input stream
251gets	get a line from a stream
252getw	get next character or word from input stream
253getwc	get next wide character from input stream
254getwchar	get next wide character from input stream
255mkstemp	create unique temporary file
256mktemp	create unique temporary file
257perror	system error messages
258printf	formatted output conversion
259putc	output a character or word to a stream
260putchar	output a character or word to a stream
261puts	output a line to a stream
262putw	output a character or word to a stream
263putwc	output a wide character to a stream
264putwchar	output a wide character to a stream
265remove	remove directory entry
266rewind	reposition a stream
267scanf	input format conversion
268setbuf	stream buffering operations
269setbuffer	stream buffering operations
270setlinebuf	stream buffering operations
271setvbuf	stream buffering operations
272snprintf	formatted output conversion
273sprintf	formatted output conversion
274sscanf	input format conversion
275strerror	system error messages
276sys_errlist	system error messages
277sys_nerr	system error messages
278tempnam	temporary file routines
279tmpfile	temporary file routines
280tmpnam	temporary file routines
281ungetc	un-get character from input stream
282ungetwc	un-get wide character from input stream
283vfprintf	formatted output conversion
284vfscanf	input format conversion
285vprintf	formatted output conversion
286vscanf	input format conversion
287vsnprintf	formatted output conversion
288vsprintf	formatted output conversion
289vsscanf	input format conversion
290.El
291.Sh BUGS
292The standard buffered functions do not interact well with certain other
293library and system functions, especially
294.Xr vfork 2
295and
296.Xr abort 3 .
297