ftell, ftello—return position in a stream or file #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.