fgetpos
Получает индикатор позиции файла потока.
Синтаксис
int fgetpos(
FILE *stream,
fpos_t *pos
);
Параметры
stream
Целевой поток.
pos
Хранилище индикатора позиции.
Возвращаемое значение
В случае успеха fgetpos
возвращает 0. При сбое возвращает ненулевое значение и задает errno
одно из следующих констант манифеста (определено в STDIO. H): EBADF
это означает, что указанный поток не является допустимым указателем файла или недоступен, или EINVAL
означает stream
, что значение или значение pos
недопустимо, например, если имеет значение NULL. Если stream
или pos
является NULL
указателем, функция вызывает обработчик недопустимых параметров, как описано в разделе проверки параметров.
Замечания
Функция fgetpos
возвращает текущее значение индикатора позиции файла для аргумента stream
и сохраняет его в объекте, на который указывает pos
. После этого функция fsetpos
может использовать данные, хранящиеся в указателе pos
, для сброса указателя аргумента stream
в позицию на момент времени, когда была вызвана функция fgetpos
. Значение pos
хранится во внутреннем формате и предназначено для использования только в функциях fgetpos
и fsetpos
.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Function | Обязательный заголовок |
---|---|
fgetpos |
<stdio.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_fgetpos.c
// This program uses fgetpos and fsetpos to
// return to a location in a file.
#include <stdio.h>
int main( void )
{
FILE *stream;
fpos_t pos;
char buffer[20];
if( fopen_s( &stream, "crt_fgetpos.txt", "rb" ) ) {
perror( "Trouble opening file" );
return -1;
}
// Read some data and then save the position.
fread( buffer, sizeof( char ), 8, stream );
if( fgetpos( stream, &pos ) != 0 ) {
perror( "fgetpos error" );
return -1;
}
fread( buffer, sizeof( char ), 13, stream );
printf( "after fgetpos: %.13s\n", buffer );
// Restore to old position and read data
if( fsetpos( stream, &pos ) != 0 ) {
perror( "fsetpos error" );
return -1;
}
fread( buffer, sizeof( char ), 13, stream );
printf( "after fsetpos: %.13s\n", buffer );
fclose( stream );
}
Входные данные: crt_fgetpos.txt
fgetpos gets a stream's file-position indicator.
Выходные данные: crt_fgetpos.txt
after fgetpos: gets a stream
after fsetpos: gets a stream