### 6.4 `ftello64`—return position in a stream or file ¶

Synopsis

    #include <stdio.h>
    _off64_t ftello64(FILE *fp);
    _off64_t _ftello64_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 `ftello64` is the current position for a large file identified by fp. If you record this result, you can later use it with `fseeko64` to return the file to this position. The difference between `ftello` and `ftello64` is that `ftello` returns `off_t` and `ftello64` is designed to work for large files (>2GB) and returns `_off64_t`.

In the current implementation, `ftello64` simply uses a character count to represent the file position; this is the same number that would be recorded by `fgetpos64`.

The function exists only if the __LARGE64_FILES flag is defined. An error occurs if the fp was not opened via `fopen64`.

Returns
`ftello64` returns the file position, if possible. If it cannot do this, it returns `-1`. Failure occurs on streams that do not support positioning or not opened via `fopen64`; the global `errno` indicates this condition with the value `ESPIPE`.

Portability
`ftello64` is a glibc extension.

No supporting OS subroutines are required.