C言語によるファイル操作の実装方法

C言語でのファイル入出力処理に関する基本的なサンプルコードを以下に示します。

  1. ファイルへの書き込み
#include <stdio.h>

int main() {
    FILE *fp;
    
    // 書き込みモードでファイルを開く(存在しない場合は作成し、既存の場合は内容をクリア)
    fp = fopen("sample.txt", "w");
    
    if (fp == NULL) {
        printf("ファイルを開けません\n");
        return 1;
    }
    
    // ファイルにデータを書き込む
    fprintf(fp, "最初の行のテキストです\n");
    fputs("2行目のテキストです\n", fp);
    
    // ファイルを閉じる
    fclose(fp);
    
    printf("データは正常にファイルに書き込まれました\n");
    
    return 0;
}
  1. ファイルからの読み込み
#include <stdio.h>

int main() {
    FILE *fp;
    char buffer[255];
    
    // 読み取りモードでファイルを開く
    fp = fopen("sample.txt", "r");
    
    if (fp == NULL) {
        printf("ファイルを開けません\n");
        return 1;
    }
    
    printf("ファイルの内容:\n");
    
    // 一行ずつファイルを読み込む
    while (fgets(buffer, 255, fp) != NULL) {
        printf("%s", buffer);
    }
    
    // ファイルを閉じる
    fclose(fp);
    
    return 0;
}
  1. ファイルへの追記
#include <stdio.h>

int main() {
    FILE *fp;
    
    // 追記モードでファイルを開く(存在しない場合は作成)
    fp = fopen("sample.txt", "a");
    
    if (fp == NULL) {
        printf("ファイルを開けません\n");
        return 1;
    }
    
    // ファイルの末尾に追記する
    fprintf(fp, "追加されたテキストです\n");
    
    // ファイルを閉じる
    fclose(fp);
    
    printf("内容はファイルに正常に追記されました\n");
    
    return 0;
}
  1. バイナリファイルの読み書き
#include <stdio.h>

struct Student {
    int id;
    char name[50];
    float score;
};

int main() {
    // バイナリファイルへの書き込み
    FILE *fp = fopen("students.dat", "wb");
    if (fp == NULL) {
        printf("ファイルを作成できません\n");
        return 1;
    }
    
    struct Student student1 = {1, "田中", 85.5};
    struct Student student2 = {2, "佐藤", 92.0};
    
    fwrite(&student1, sizeof(struct Student), 1, fp);
    fwrite(&student2, sizeof(struct Student), 1, fp);
    
    fclose(fp);
    
    // バイナリファイルからの読み込み
    fp = fopen("students.dat", "rb");
    if (fp == NULL) {
        printf("ファイルを開けません\n");
        return 1;
    }
    
    struct Student loadedStudent;
    
    printf("学生情報:\n");
    while (fread(&loadedStudent, sizeof(struct Student), 1, fp)) {
        printf("ID: %d, 名前: %s, 点数: %.1f\n",
               loadedStudent.id, loadedStudent.name, loadedStudent.score);
    }
    
    fclose(fp);
    
    return 0;
}

注意点

  1. ファイルを開いた際には必ずファイルポインタがNULLでないか確認し、ファイルが正常に開かれていることを確認してください。
  2. 処理終了後は必ずファイルを閉じる(fclose)必要があります。
  3. ファイルを開く際には適切なモードを使用します:
  • "r": 読み取り専用
  • "w": 書き込み専用(既存内容を上書き)
  • "a": 追記モード
  • "r+": 読み書き可能(ファイルが存在している必要あり)
  • "w+": 読み書き可能(新規作成または上書き)
  • "a+": 読み書き可能(追記モード)
  • バイナリファイルの場合はモードに'b'を追加します。例:"wb"、"rb"など。

タグ: C言語 ファイル操作 入出力 バイナリファイル テキストファイル

6月18日 23:09 投稿