ftell(), ftello(), ftello64()

Вернуть текущую позицию указателя положения в потоке

Прототип:

#include <stdio.h>
long int ftell( FILE *fp );
off_t ftello( FILE *fp );
off64_t ftello64( FILE *fp );

Аргументы:

fp
Поток, для которого нужно вернуть текущую позицию.

Библиотека:

libc

Описание:

Функции ftell(), ftello() и ftello64() возвращают текущую позицию в потоке, определенном fp. Эта позиция определяет символ, который будет прочитан или записан следующей опреацией ввода/вывода в файл. Различия между этими функциями - в типе данных возвращаемой позиции.

Можно использовать значение, возвращаемое функцией ftell(), в последующем вызове fseek(), fseeko() или fseeko64() для восстановления предыдущего значения позиции в файле.

Возвращаемое значение:

Текущая позиция в файле. Если возникла ошибка, функция возвращает -1L, код ошибки записывается в errno.

Примеры:

#include <stdio.h>
#include <stdlib.h>
long filesize( FILE *fp )
{
long int save_pos;
long size_of_file;
/* Save the current position. */
save_pos = ftell( fp );
/* Jump to the end of the file. */
fseek( fp, 0L, SEEK_END );
/* Get the end position. */
size_of_file = ftell( fp );
/* Jump back to the original position. */
fseek( fp, save_pos, SEEK_SET );
return (size_of_file);
}
int main( void )
{
FILE *fp;
fp = fopen( "file", "r" );
if ( fp != NULL )
{
printf( "File size=%ld\n", filesize( fp ) );
fclose( fp );
return (EXIT_SUCCESS);
}
return (EXIT_FAILURE);
}

Классификация:

ftell() — ANSI, POSIX 1003.1; ftello() — POSIX 1003.1; ftello64() — Поддержка больших файлов

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

errno, fgetpos(), fopen(), fsetpos(), fseek(), fseeko(), fseeko64()




Предыдущий раздел: Описание API системной библиотеки