FTELL(3)

NAME
ftell, ftello, _ftell_r, _ftello_r - return position in a stream or file

SYNOPSIS

#include <stdio.h>

long ftell(FILE *fp);

off_t ftello(FILE *fp);

long _ftell_r(struct _reent *ptr, FILE *fp);

off_t _ftello_r(struct _reent *ptr, FILE *fp);

DESCRIPTION

Objects of type FILE can have a ``position'' that records how much of the file your program has already read. Many of the stdio functions depend on this position, and many change it as a side effect.

The result of ftell/ftello is the current position for a file identified by fp. If you record this result, you can later use it with fseek/fseeko to return the file to this position. The difference between ftell and ftello is that ftell returns long and ftello returns off_t.

In the current implementation, ftell/ftello simply uses a character count to represent the file position; this is the same number that would be recorded by fgetpos.

RETURNS

ftell/ftello return the file position, if possible. If they cannot do this, they return -1L. Failure occurs on streams that do not support positioning; the global errno indicates this condition with the value ESPIPE.

PORTABILITY

ftell is required by the ANSI C standard, but the meaning of its result (when successful) is not specified beyond requiring that it be acceptable as an argument to fseek. In particular, other conforming C implementations may return a different result from ftell than what fgetpos records.

ftello is defined by the Single Unix specification.

No supporting OS subroutines are required.