【C言語】ファイルを途中から読み込みする方法を解説

この記事では、C言語でファイルを途中から読み込む方法について解説します。

目次から探す

ファイルを途中から読み込む方法

プログラムでファイルを扱う際、ファイルの途中から読み込む必要がある場合があります。

C言語では、ファイルポインタを操作することで、ファイルの途中から読み込むことができます。

ファイルポインタの移動

ファイルポインタは、ファイル内の現在の位置を示すポインタです。

ファイルポインタを移動させることで、読み込む位置を変更することができます。

fseek関数の使用方法

fseek関数を使用すると、ファイルポインタを指定した位置に移動することができます。

fseek関数の書式は以下の通りです。


int fseek(FILE *stream, long offset, int origin);
引数名説明
streamファイルポインタを指すポインタ
offset移動するバイト数
origin移動の基準位置を指定する定数

originに指定できる定数は以下の3つです。

説明
SEEK_SETファイルの先頭を基準とします。
SEEK_CUR現在位置を基準とします。
SEEK_ENDファイルの末尾を基準とします。

以下に、fseek関数を使用してファイルポインタを移動するサンプルコードを示します。


#include <stdio.h>
int main() {
    FILE *fp = fopen("sample.txt", "r");
    if (fp == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    // ファイルポインタを10バイト目に移動
    fseek(fp, 10, SEEK_SET);
    // 移動後のファイルポインタの位置を取得
    long position = ftell(fp);
    printf("ファイルポインタの位置: %ld\n", position);
    fclose(fp);
    return 0;
}

上記のコードでは、sample.txtというファイルを読み込みモードで開き、ファイルポインタを10バイト目に移動しています。

その後、ftell関数を使用して移動後のファイルポインタの位置を取得し、表示しています。

ファイルの読み込み

ファイルポインタを移動させた後は、通常のファイル読み込みの方法でデータを読み込むことができます。

ファイルポインタが移動した位置から読み込まれます。

以下に、ファイルポインタを移動させた後にファイルを読み込むサンプルコードを示します。


#include <stdio.h>
int main() {
    FILE *fp = fopen("sample.txt", "r");
    if (fp == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    // ファイルポインタを10バイト目に移動
    fseek(fp, 10, SEEK_SET);
    // 移動後のファイルポインタの位置を取得
    long position = ftell(fp);
    printf("ファイルポインタの位置: %ld\n", position);
    // ファイルからデータを読み込む
    char buffer[256];
    fgets(buffer, sizeof(buffer), fp);
    printf("読み込んだデータ: %s\n", buffer);
    fclose(fp);
    return 0;
}

上記のコードでは、ファイルポインタを10バイト目に移動し、その後fgets関数を使用してファイルからデータを読み込んでいます。

読み込んだデータは、bufferという配列に格納され、表示されます。

以上が、C言語でファイルを途中から読み込む方法の説明です。

ファイルポインタを操作することで、任意の位置からデータを読み込むことができます。

目次から探す