blob: dee1db6c00a481af126bc99b49022e6685a79a1e [file] [log] [blame]
<html lang="en">
<head>
<title>Streams - The GNU C Library</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The GNU C Library">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="I_002fO-on-Streams.html#I_002fO-on-Streams" title="I/O on Streams">
<link rel="next" href="Standard-Streams.html#Standard-Streams" title="Standard Streams">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU C library.
This is Edition 0.12, last updated 2007-10-27,
of `The GNU C Library Reference Manual', for version
2.8 (Sourcery G++ Lite 2011.03-41).
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2007, 2008, 2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software Needs Free Documentation''
and ``GNU Lesser General Public License'', the Front-Cover texts being
``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A
copy of the license is included in the section entitled "GNU Free
Documentation License".
(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual. Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Streams"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Standard-Streams.html#Standard-Streams">Standard Streams</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="I_002fO-on-Streams.html#I_002fO-on-Streams">I/O on Streams</a>
<hr>
</div>
<h3 class="section">12.1 Streams</h3>
<p>For historical reasons, the type of the C data structure that represents
a stream is called <code>FILE</code> rather than &ldquo;stream&rdquo;. Since most of
the library functions deal with objects of type <code>FILE *</code>, sometimes
the term <dfn>file pointer</dfn> is also used to mean &ldquo;stream&rdquo;. This leads
to unfortunate confusion over terminology in many books on C. This
manual, however, is careful to use the terms &ldquo;file&rdquo; and &ldquo;stream&rdquo;
only in the technical sense.
<a name="index-file-pointer-915"></a>
<a name="index-stdio_002eh-916"></a>The <code>FILE</code> type is declared in the header file <samp><span class="file">stdio.h</span></samp>.
<!-- stdio.h -->
<!-- ISO -->
<div class="defun">
&mdash; Data Type: <b>FILE</b><var><a name="index-FILE-917"></a></var><br>
<blockquote><p>This is the data type used to represent stream objects. A <code>FILE</code>
object holds all of the internal state information about the connection
to the associated file, including such things as the file position
indicator and buffering information. Each stream also has error and
end-of-file status indicators that can be tested with the <code>ferror</code>
and <code>feof</code> functions; see <a href="EOF-and-Errors.html#EOF-and-Errors">EOF and Errors</a>.
</p></blockquote></div>
<p><code>FILE</code> objects are allocated and managed internally by the
input/output library functions. Don't try to create your own objects of
type <code>FILE</code>; let the library do it. Your programs should
deal only with pointers to these objects (that is, <code>FILE *</code> values)
rather than the objects themselves.
<!-- !!! should say that FILE's have "No user-serviceable parts inside." -->
</body></html>