ftell
|
Определено в заголовочном файле
<stdio.h>
|
||
|
long
ftell
(
FILE
*
stream
)
;
|
||
Возвращает индикатор позиции в файле для файлового потока stream .
Если поток открыт в бинарном режиме, значение, полученное этой функцией, представляет собой количество байт от начала файла.
Если поток открыт в текстовом режиме, значение, возвращаемое этой функцией, не определено и имеет смысл только как входные данные для fseek() .
Содержание |
Параметры
| stream | - | файловый поток для проверки |
Возвращаемое значение
Индикатор позиции в файле при успехе или - 1L при возникновении ошибки.
При ошибке переменная errno устанавливается в определённое реализацией положительное значение.
Примечания
В Windows,
_ftelli64
может использоваться для работы с файлами размером более 2 ГиБ.
Пример
Демонстрирует работу
ftell()
с проверкой ошибок. Записывает, а затем читает несколько значений с плавающей точкой (FP) из файла и в файл.
#include <stdio.h> #include <stdlib.h> /* If the condition is not met then exit the program with error message. */ void check(_Bool condition, const char* func, int line) { if (condition) return; perror(func); fprintf(stderr, "%s failed in file %s at line # %d\n", func, __FILE__, line - 1); exit(EXIT_FAILURE); } int main(void) { /* Prepare an array of FP values. */ #define SIZE 5 double A[SIZE] = {1.1, 2.0, 3.0, 4.0, 5.0}; /* Write array to a file. */ const char* fname = "/tmp/test.bin"; FILE* file = fopen(fname, "wb"); check(file != NULL, "fopen()", __LINE__); const int write_count = fwrite(A, sizeof(double), SIZE, file); check(write_count == SIZE, "fwrite()", __LINE__); fclose(file); /* Read the FP values into array B. */ double B[SIZE]; file = fopen(fname, "rb"); check(file != NULL, "fopen()", __LINE__); long int pos = ftell(file); /* position indicator at start of file */ check(pos != -1L, "ftell()", __LINE__); printf("pos: %ld\n", pos); const int read_count = fread(B, sizeof(double), 1, file); /* read one FP value */ check(read_count == 1, "fread()", __LINE__); pos = ftell(file); /* position indicator after reading one FP value */ check(pos != -1L, "ftell()", __LINE__); printf("pos: %ld\n", pos); printf("B[0]: %.1f\n", B[0]); /* print one FP value */ return EXIT_SUCCESS; }
Возможный вывод:
pos: 0 pos: 8 B[0]: 1.1
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.21.9.4 Функция ftell (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.21.9.4 Функция ftell (стр.: TBD)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.21.9.4 Функция ftell (стр: 337-338)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.19.9.4 Функция ftell (стр. 303-304)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
-
- 4.9.9.4 Функция ftell
Смотрите также
|
получает индикатор позиции в файле
(функция) |
|
|
перемещает индикатор позиции в файле в определённое место
(функция) |
|
|
перемещает индикатор позиции в файле в определённое место
(функция) |
|
|
C++ documentation
для
ftell
|
|