fgetpos

ストリームのファイル位置インジケーターを取得します。

構文

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

パラメーター

stream
対象のストリーム。

pos
位置インジケーターのストレージ。

戻り値

正常に終了した場合、fgetpos は 0 を返します。 失敗した場合は、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>

互換性の詳細については、「 Compatibility」を参照してください。

例

// 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