fgetpos

更新 : 2007 年 11 月

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

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 に格納された情報を後で使用して、stream 引数のポインタを fgetpos が呼び出された時点の位置にリセットできます。pos の値は内部形式で格納され、fgetpos および fsetpos だけで使用できるようになっています。

必要条件

関数

必須ヘッダー

fgetpos

<stdio.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

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

Output crt_fgetpos.txt

after fgetpos: gets a stream
after fsetpos: gets a stream

.NET Framework の相当するアイテム

System::IO::FileStream::Position

参照

参照

ストリーム入出力

fsetpos