先頭へ戻る

fgetpos | Programming Place Plus C言語編 標準ライブラリのリファレンス

Programming Place Plus トップページC言語編標準ライブラリのリファレンス(名前順)

Programming Place Plus トップページC言語編標準ライブラリのリファレンス(ヘッダ別)

先頭へ戻る


fgetpos関数

概要

ファイルポジションを取得する。

ヘッダ

stdio.h

形式

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

引数

stream

対象のストリーム。

pos

ファイルポジションを受け取るメモリアドレス。

戻り値

成功したら 0、失敗したら 0以外を返す。

詳細

現在のファイルポジションを取得する。ただし、この関数で得られた情報の内容は未規定であり、fsetpos関数に渡すことだけができる。
失敗した場合、errno に処理系定義の正の値が格納される。

注意

使用例

#include <stdio.h>
#include <stdlib.h>

void printLine(FILE* fp);

int main(void)
{
    FILE* fp = fopen( "test.txt", "r" );
    if( fp == NULL ){
        fputs( "ファイルオープンに失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }

    fpos_t pos;
    printLine( fp );
    if( fgetpos( fp, &pos ) != 0 ){
        fputs( "ファイルポジションの取得に失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }
    printLine( fp );
    printLine( fp );
    if( fsetpos( fp, &pos ) != 0 ){
        fputs( "ファイルポジションの移動に失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }
    printLine( fp );

    if( fclose( fp ) == EOF ){
        fputs( "ファイルクローズに失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }

    return 0;
}

void printLine(FILE* fp)
{
    char buf[80];

    if( fgets( buf, sizeof(buf), fp ) == NULL ){
        fputs( "ファイルへの書き込みに失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }

    // 末尾の改行文字を取り除く
    char* p = strchr( buf, '\n' );
    if( p != NULL ){
        *p = '\0';
    }

    puts( buf );
}

入力ファイル(test.txt)

aaaaa
bbbbb
ccccc
ddddd

実行結果:

aaaaa
bbbbb
ccccc
bbbbb

関連

この関数で取得できた値は、fsetpos関数に渡すことができる。

解説章

第41章


参考リンク


更新履歴

’2018/4/7 「詳細」の文面を修正(内容は変わらない)。
本編の章立てが変わっていたので、「解説章」のリンク先を修正。

’2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー