【6日でできるC言語入門】テキストファイルの読み書き

 C言語で「テキストファイルの読み書き」は、データ保存や外部データの利用、ログ出力など、実用プログラムで必須となる技術です。ファイル操作には「ファイルのオープン」「データの書き込み・読み込み」「ファイルのクローズ」といった一連の手順があります。
 ここでは、テキストファイルの基本的な入出力方法を、サンプルプログラムや表を使って分かりやすく解説します。

1.テキストファイルへの書き込み

1.1. ファイルのオープンと書き込み

テキストファイルへの出力は、fopen関数でファイルを開き、fprintf関数で書き込みを行います。

関数書式主な用途
fopenFILE* fopen("ファイル名", "モード");ファイルを開く
fprintfint fprintf(FILE* fp, "フォーマット", …);ファイルに書き込む
fcloseint fclose(FILE* fp);ファイルを閉じる

サンプルプログラム(書き込み)

プロジェクト/ファイル名: Lesson67_1/main.c

#include <stdio.h>

int main(void) {
    FILE* fp = fopen("output.txt", "w");
    if (fp == NULL) {
        printf("ファイルを開けません。\n");
        return 1;
    }
    fprintf(fp, "こんにちは、ファイルへ書き込みます。\n");
    fprintf(fp, "C言語でテキストファイル操作を学ぼう。\n");
    fclose(fp);
    return 0;
}

実行後のoutput.txtの内容

こんにちは、ファイルへ書き込みます。
C言語でテキストファイル操作を学ぼう。

1.2. fopen関数のモード一覧

モード意味ファイルが無い場合
"r"読み込みエラー
"w"書き込み新規作成
"a"追記新規作成
"r+"読み・書きエラー
"w+"書き・読み(上書き)新規作成
"a+"追記・読み新規作成

2.テキストファイルの読み込み

2.1. 1行ずつ読み込む(fgets関数)

ファイルを1行ごとに読み込むにはfgets関数を使います。

関数書式主な用途
fgetschar* fgets(配列, サイズ, FILE* fp);1行ずつ読み込む

サンプルプログラム(1行ごとに読み込む)

プロジェクト/ファイル名: Lesson67_2/main.c

#include <stdio.h>

int main(void) {
    FILE* fp = fopen("output.txt", "r");
    char line[256];

    if (fp == NULL) {
        printf("ファイルを開けません。\n");
        return 1;
    }
    while (fgets(line, sizeof(line), fp) != NULL) {
        printf("%s", line);
    }
    fclose(fp);
    return 0;
}

実行結果

 「Lesson67_2」ディレクトリに、先ほど作成した「output.txt」をコピーして、プロジェクトのリソースファイルに登録しておきます。

こんにちは、ファイルへ書き込みます。
C言語でテキストファイル操作を学ぼう。

2.2. 1文字ずつ読み込む(fgetc関数)

ファイルを1文字ずつ読み込む場合はfgetc関数を使います。

関数書式主な用途
fgetcint fgetc(FILE* fp);1文字ずつ読み込む

サンプルプログラム(1文字ごとに読み込む)

プロジェクト/ファイル名: Lesson67_3/main.c

#include <stdio.h>

int main(void) {
    FILE* fp = fopen("output.txt", "r");
    int ch;

    if (fp == NULL) {
        printf("ファイルを開けません。\n");
        return 1;
    }
    while ((ch = fgetc(fp)) != EOF) {
        printf("%c", ch);
    }
    fclose(fp);
    return 0;
}

実行結果

 「Lesson67_3」ディレクトリに、先ほど作成した「output.txt」をコピーして、プロジェクトのリソースファイルに登録しておきます。

こんにちは、ファイルへ書き込みます。
C言語でテキストファイル操作を学ぼう。

3.ファイル操作のポイント

3.1. ファイルポインタ(FILE*)の役割

  • ファイル操作時は必ず「FILE型ポインタ」が必要
  • fopenの戻り値がファイルポインタ(FILE*)
  • 読み書きはこのポインタを通じて行う

3.2. 読み込みと書き込みの関数まとめ

用途代表的な関数説明
ファイルのオープンfopenファイルを開く
書き込みfprintf, fputs文字列やフォーマット出力
読み込みfgets, fgetc1行ごと/1文字ごとに読み込み
ファイルを閉じるfclose開いたファイルを閉じる

まとめ

  • C言語でテキストファイルを読み書きするには「fopen」「fprintf/fgets/fgetc」「fclose」が基本
  • ファイルのモード("r", "w", "a"など)を使い分ける
  • 「1行ずつ」や「1文字ずつ」など、用途に応じて適切な関数を選ぶ

テキストファイル操作の基本を身につけることで、より多彩なプログラム開発ができるようになります!