fseek

ファイル位置指示子のセット

【書式】
#include <stdio.h>
int fseek(FILE *fp, long offset, int origin);

【説明】
ファイル fp のファイル位置指示子を origin を基準として、offset バイト移動します。
バイナリストリームでは、origin に SEEK_END を指定した場合には意味どおりに動作するかどうかは不定です。
テキストストリームでは、offset が0であるか、または offset が同じストリームに対する以前の ftell関数の呼出しで返された値でなければなりません。後者の場合、origin は SEEK_SETでなければなりません。
fseek の呼び出し成功で、終了指示子をクリアします。
fseek の呼出しの後では、入力、出力どちらの動作も可能です。

【引数】
FILE *fp   : FILEポインタ
long offset  : 移動バイト数
int origin  : SEEK_SET (ファイルの先頭)
         SEEK_CUR (ファイルの現在位置)
         SEEK_END (ファイルの終端)

【戻り値】
正常時 : =0
異常時 : ≠0

【使用例】
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
        FILE *fp;

        if((fp = fopen(argv[1], "rb")) == NULL ) {
                fprintf(stderr,"ファイルオープンエラー\n");
                exit(EXIT_FAILURE);
        }

        fseek(fp, 10L, SEEK_SET);
        printf("ファイル位置 = %ld\n",ftell(fp));
        fseek(fp, -5L, SEEK_CUR);
        printf("ファイル位置 = %ld\n",ftell(fp));
        fseek(fp,  0L, SEEK_END);
        printf("ファイル位置 = %ld\n",ftell(fp));
        fseek(fp,  0L, SEEK_SET);
        printf("ファイル位置 = %ld\n",ftell(fp));
                
        fclose(fp);

        return 0;
}
【実行結果例】
ファイル位置 = 10
ファイル位置 = 5
ファイル位置 = 661
ファイル位置 = 0

戻る


banner
初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved