Поделиться через


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

См. также

Потоковый ввод-вывод
fsetpos