fgetpos

取得資料流的檔案位置指標。

語法

int fgetpos(
   FILE *stream,
   fpos_t *pos
);

參數

stream
目標資料流。

pos
位置指標儲存區。

傳回值

如果成功,fgetpos 會傳回 0。 失敗時,它會傳回非零值,並將 設定 errno 為下列其中一個資訊清單常數(定義于 STDIO 中。H): EBADF ,這表示指定的資料流程不是有效的檔案指標或無法存取,或 EINVAL ,這表示 stream 值或 的值 pos 無效,例如如果任一個是 Null 指標。 如果 streamposNULL 指標,函式會叫用不正確參數處理常式,如參數驗證 中所述

備註

fgetpos 函式會取得 stream 引數之檔案位置指標的目前值,並將它儲存在 pos 所指向的物件。 fsetpos 函式稍後可以使用 pos 中所儲存的資訊,在呼叫 fgetpos 時,將 stream 引數的指標重設為其位置。 pos 值是以內部格式儲存,並且僅供 fgetposfsetpos 使用。

根據預設,此函式的全域狀態會限定于應用程式。 若要變更此行為,請參閱 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