Вернуть текущую позицию указателя положения в потоке
#include <stdio.h>long int ftell( FILE *fp );off_t ftello( FILE *fp );off64_t ftello64( FILE *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 системной библиотеки