fseek(3S) STANDARD I/O FUNCTIONS fseek(3S)
NAME
fseek, rewind, ftell - reposition a file pointer in a stream
SYNOPSIS
#include <stdio.h>
int fseek (FILE *stream, long offset, int ptrname);
void rewind (FILE *stream);
long ftell (FILE *stream);
DESCRIPTION
fseek sets the position of the next input or output opera-
tion on the stream [see intro(3)]. The new position is at
the signed distance offset bytes from the beginning, from
the current position, or from the end of the file, according
to a ptrname value of SEEKSET, SEEKCUR, or SEEKEND
(defined in stdio.h) as follows:
SEEKSET set position equal to offset bytes.
SEEKCUR set position to current location plus offset.
SEEKEND set position to EOF plus offset. fseek allows
the file position indicator to be set beyond the
end of the existing data in the file. If data
is later written at this point, subsequent reads
of data in the gap will return zero until data
is actually written into the gap. fseek, by
itself, does not extend the size of the file.
rewind (stream) is equivalent to:
(void) fseek (stream, 0L, SEEKSET);
except that rewind also clears the error indicator on
stream.
fseek and rewind clear the EOF indicator and undo any
effects of ungetc on stream. After fseek or rewind, the
next operation on a file opened for update may be either
input or output.
If stream is writable and buffered data has not been written
to the underlying file, fseek and rewind cause the unwritten
data to be written to the file.
ftell returns the offset of the current byte relative to the
beginning of the file associated with the named stream.
Last change: C Programming Language Utilities 1
fseek(3S) STANDARD I/O FUNCTIONS fseek(3S)
SEE ALSO
lseek(2), write(2), fopen(3S), popen(3S), stdio(3S),
ungetc(3S).
DIAGNOSTICS
fseek returns -1 for improper seeks, otherwise zero. An
improper seek can be, for example, an fseek done on a file
that has not been opened via fopen; in particular, fseek may
not be used on a terminal or on a file opened via popen.
After a stream is closed, no further operations are defined
on that stream.
NOTES
Although on the UNIX system an offset returned by ftell is
measured in bytes, and it is permissible to seek to posi-
tions relative to that offset, portability to non-UNIX sys-
tems requires that an offset be used by fseek directly.
Arithmetic may not meaningfully be performed on such an
offset, which is not necessarily measured in bytes.
Last change: C Programming Language Utilities 2