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