Node:File Positioning, Next:Portable Positioning, Previous:Binary Streams, Up:I/O on Streams
The file position of a stream describes where in the file the stream is currently reading or writing. I/O on the stream advances the file position through the file. In the GNU system, the file position is represented as an integer, which counts the number of bytes from the beginning of the file. See File Position.
During I/O to an ordinary disk file, you can change the file position whenever you wish, so as to read or write any portion of the file. Some other kinds of files may also permit this. Files which support changing the file position are sometimes referred to as random-access files.
You can use the functions in this section to examine or modify the file
position indicator associated with a stream. The symbols listed below
are declared in the header file stdio.h
.
long int ftell (FILE *stream) | Function |
This function returns the current file position of the stream
stream.
This function can fail if the stream doesn't support file positioning,
or if the file position can't be represented in a |
off_t ftello (FILE *stream) | Function |
The ftello function is similar to ftell , except that it
returns a value of type off_t . Systems which support this type
use it to describe all file positions, unlike the POSIX specification
which uses a long int. The two are not necessarily the same size.
Therefore, using ftell can lead to problems if the implementation is
written on top of a POSIX compliant low-level I/O implementation, and using
ftello is preferable whenever it is available.
If this function fails it returns The function is an extension defined in the Unix Single Specification version 2. When the sources are compiled with |
off64_t ftello64 (FILE *stream) | Function |
This function is similar to ftello with the only difference that
the return value is of type off64_t . This also requires that the
stream stream was opened using either fopen64 ,
freopen64 , or tmpfile64 since otherwise the underlying
file operations to position the file pointer beyond the 2^31
bytes limit might fail.
If the sources are compiled with |
int fseek (FILE *stream, long int offset, int whence) | Function |
The fseek function is used to change the file position of the
stream stream. The value of whence must be one of the
constants SEEK_SET , SEEK_CUR , or SEEK_END , to
indicate whether the offset is relative to the beginning of the
file, the current file position, or the end of the file, respectively.
This function returns a value of zero if the operation was successful,
and a nonzero value to indicate failure. A successful call also clears
the end-of-file indicator of stream and discards any characters
that were "pushed back" by the use of
|
int fseeko (FILE *stream, off_t offset, int whence) | Function |
This function is similar to fseek but it corrects a problem with
fseek in a system with POSIX types. Using a value of type
long int for the offset is not compatible with POSIX.
fseeko uses the correct type off_t for the offset
parameter.
For this reason it is a good idea to prefer The functionality and return value is the same as for The function is an extension defined in the Unix Single Specification version 2. When the sources are compiled with |
int fseeko64 (FILE *stream, off64_t offset, int whence) | Function |
This function is similar to fseeko with the only difference that
the offset parameter is of type off64_t . This also
requires that the stream stream was opened using either
fopen64 , freopen64 , or tmpfile64 since otherwise
the underlying file operations to position the file pointer beyond the
2^31 bytes limit might fail.
If the sources are compiled with |
Portability Note: In non-POSIX systems, ftell
,
ftello
, fseek
and fseeko
might work reliably only
on binary streams. See Binary Streams.
The following symbolic constants are defined for use as the whence
argument to fseek
. They are also used with the lseek
function (see I/O Primitives) and to specify offsets for file locks
(see Control Operations).
int SEEK_SET | Macro |
This is an integer constant which, when used as the whence
argument to the fseek or fseeko function, specifies that
the offset provided is relative to the beginning of the file.
|
int SEEK_CUR | Macro |
This is an integer constant which, when used as the whence
argument to the fseek or fseeko function, specifies that
the offset provided is relative to the current file position.
|
int SEEK_END | Macro |
This is an integer constant which, when used as the whence
argument to the fseek or fseeko function, specifies that
the offset provided is relative to the end of the file.
|
void rewind (FILE *stream) | Function |
The rewind function positions the stream stream at the
beginning of the file. It is equivalent to calling fseek or
fseeko on the stream with an offset argument of
0L and a whence argument of SEEK_SET , except that
the return value is discarded and the error indicator for the stream is
reset.
|
These three aliases for the SEEK_...
constants exist for the
sake of compatibility with older BSD systems. They are defined in two
different header files: fcntl.h
and sys/file.h
.
L_SET
SEEK_SET
.
L_INCR
SEEK_CUR
.
L_XTND
SEEK_END
.