C言語例文集


 fseek()    ファイルポインタの位置を設定する

ヘッダ stdio.h
書式 int fseek(FILE *fp, long offset, int origin);
引数 fp … ファイルポインタ
offset … originで指定した位置からファイルポインタを移動するバイト数
origin … ファイルポインタの初期設定値

origenで指定できる値は以下の通り。
SEEK_CUR:現在のファイルポインタの位置
SEEK_END:ファイルの終端
SEEK_SET:ファイルの先頭
戻り値 成功:0
失敗:-1
解説 現在開いているファイルの位置を示しているポインタを、originで指定した位置から、offsetバイト分移動した位置に設定する。offsetには負の値を設定することが可能で、負の値を入力するとファイルポインタは前に移動する。


<サンプルプログラム>

/****************************************************************************/
#include<stdio.h>

int main()
{
    // 変数定義
    FILE *fp;
    int pos;
    int c;

    // 変数初期化
    fp = NULL;
    pos = 0;
    c = 0;

    // ファイルオープン
    fp = fopen("test.txt", "r");
    if(fp == NULL)  // ファイルオープン失敗
    {
        fprintf(stderr, "ファイルオープンエラー\n");
        return 1;  // 異常終了
    }

    // ファイルポインタの位置を調べる
    pos = ftell(fp);  // ファイルポインタの位置を取得
    fprintf(stdout, "ファイルポインタの位置:%d\n", pos);

    // ファイル終端から5バイト手前に移動する
    if(fseek(fp, -5, SEEK_END))
    {
        fprintf(stderr, "fseekエラー\n");
        return 1;  // 異常終了
    }

    // ファイルポインタの位置を調べる
    pos = ftell(fp);  // ファイルポインタの位置を取得
    fprintf(stdout, "ファイルポインタの位置:%d\n", pos);

    // ファイル先頭から6バイト先に移動する
    if(fseek(fp, 6, SEEK_SET))
    {
        fprintf(stderr, "fseekエラー\n");
        return 1;  // 異常終了
    }

    // ファイルポインタの位置を調べる
    pos = ftell(fp);  // ファイルポインタの位置を取得
    fprintf(stdout, "ファイルポインタの位置:%d\n", pos);

    // 1バイト読み込む
    c = fgetc(fp);
    fprintf(stdout, "読み込んだ文字:%c\n", c);

    // ファイルポインタの位置を調べる
    pos = ftell(fp);  // ファイルポインタの位置を取得
    fprintf(stdout, "ファイルポインタの位置:%d\n", pos);

    // ファイルクローズ
    fclose(fp);

    return 0;
}
/****************************************************************************/


<使用ファイル>

プログラムで使用するtest.txtの内容(10バイト)
--------------------------
ABCDEFGHIJ
--------------------------


<実行結果>



<Topページ>

Copyright(c) 2010 , cgengor
このWebページの内容を無断で複製または転載することを禁じます。
このWebページの情報を利用することにより発生したいかなる損害について著作権保有者はいっさいの責任を負いません。