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 中所儲存的資訊,在呼叫 fgetpos 時,將 stream 引數的指標重設為其位置。 pos 值是以內部格式儲存,並且僅供 fgetpos 和 fsetpos 使用。

根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。

需求

函式 必要的標頭
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

另請參閱

資料流 I/O
fsetpos