fgetpos

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

構文

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

パラメーター

stream
対象のストリーム。

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

戻り値

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

解説

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