ftell
Определено в заголовке <stdio.h> | ||
|---|---|---|
long ftell( FILE *stream ); |
Возвращает указатель позиции файла для потока файла stream.
Если поток открыт в двоичном режиме, полученное значение является количеством байтов от начала файла.
Если поток открыт в текстовом режиме, возвращаемое значение этой функции не определено и имеет смысл только как вход для fseek().
Параметры
| stream | - | поток файла для проверки |
Возвращаемое значение
Указатель позиции файла при успехе или -1L в случае неудачи.
При ошибке переменная errno устанавливается в положительное значение, определенное реализацией.
Пример
Демонстрирует 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.,3.,4.,5.};
/* 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
Ссылки
- Стандарт 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++ для ftell |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/io/ftell