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


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.

Требования

Функция

Обязательный заголовок

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

Эквивалент в .NET Framework

System::IO::FileStream::Position

См. также

Ссылки

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

fsetpos