ストリームのファイル位置インジケーターを取得します。Gets a stream's file-position indicator.


int fgetpos(
   FILE *stream,
   fpos_t *pos


対象のストリーム。Target stream.

位置インジケーターのストレージ。Position-indicator storage.

戻り値Return Value

成功した場合、 fgetposは0を返します。If successful, fgetpos returns 0. エラーが発生した場合、0以外の値を返し、 errnoに次のマニフェスト定数のいずれかを設定します (STDIO で定義されています)。H): EBADF。指定されたストリームが有効なファイルポインターではない、アクセスできない、またはEINVALであることを意味します。これは、どちらかが null ポインターの場合などに、ストリーム値またはposの値が無効であることを意味します。On failure, it returns a nonzero value and sets errno to one of the following manifest constants (defined in STDIO.H): EBADF, which means the specified stream is not a valid file pointer or is not accessible, or EINVAL, which means the stream value or the value of pos is invalid, such as if either is a null pointer. StreamまたはposNULLポインターの場合、「パラメーターの検証」で説明されているように、関数は無効なパラメーターハンドラーを呼び出します。If stream or pos is a NULL pointer, the function invokes the invalid parameter handler, as described in Parameter Validation.


Fgetpos関数は、ストリーム引数のファイル位置インジケーターの現在の値を取得し、 posが指すオブジェクトに格納します。Fsetpos関数は、後でposに格納されている情報を使用して、 fgetposが呼び出された時点のストリーム引数のポインターをその位置にリセットできます。The fgetpos function gets the current value of the stream argument's file-position indicator and stores it in the object pointed to by pos. The fsetpos function can later use information stored in pos to reset the stream argument's pointer to its position at the time fgetpos was called. Pos値は内部形式で格納され、 fgetposfsetposでのみ使用されます。The pos value is stored in an internal format and is intended for use only by fgetpos and fsetpos.

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。By default, this function's global state is scoped to the application. これを変更するには、「 CRT でのグローバル状態」を参照してください。To change this, see Global state in the CRT.


関数Function 必須ヘッダーRequired header
fgetposfgetpos <stdio.h><stdio.h>

互換性の詳細については、「互換性」を参照してください。For additional compatibility information, see 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.txtInput: crt_fgetpos.txt

fgetpos gets a stream's file-position indicator.

出力: crt_fgetpos.txtOutput crt_fgetpos.txt

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

関連項目See also

ストリーム入出力Stream I/O