次の方法で共有


fgetpos

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

構文

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

パラメーター

stream
対象のストリーム。

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

戻り値

正常に終了した場合、fgetpos は 0 を返します。 失敗した場合は、0 以外の値を返し、 errno を次のいずれかのマニフェスト定数 (STDIO で定義) に設定します。H): EBADF。指定されたストリームが有効なファイル ポインターではないか、アクセスできないか、 EINVAL。つまり、 stream 値または pos の値が無効であることを意味します (null ポインターの場合など)。 streamまたはposNULL ポインターである場合、関数は無効なパラメーター ハンドラーを呼び出します (パラメーター検証で説明します。

解説

fgetpos 関数は、stream 引数のファイル位置インジケーターの現在の値を取得し、pos で示されるオブジェクトに格納します。 fsetpos 関数は、pos に格納されている情報を後で使用して、fgetpos が呼び出された時点の位置まで stream 引数のポインターをリセットします。 pos 値は内部形式で格納されます。fgetposfsetpos でのみ使用される値です。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「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