【C言語入門】ファイルの開き方と閉じ方!fopenとfcloseの基本を徹底解説

プログラムで扱ったデータを保存したり、外部のファイルから設定を読み込んだりするためには、ファイル入出力の知識が不可欠です。C言語では、ファイル操作を行うための様々な関数が用意されています。

この記事では、その最も基本的かつ重要な第一歩である、ファイルの開き方 (fopen)閉じ方 (fclose) について、詳しく解説します。


目次

ファイル操作の「鍵」となるFILEポインタ

C言語でファイルを操作するには、まず**FILE型**のポインタ変数(通称:ファイルポインタ)を用意します。このポインタは、プログラムと操作対象のファイルとを繋ぐ「鍵」や「連絡通路」のような役割を果たします。

#include <stdio.h> // ファイル操作には <stdio.h> が必要

int main(void) {
    FILE *fp; // ファイルポインタを宣言
    // ... この fp を使ってファイルを操作する ...
    return 0;
}

ファイルを開く fopen 関数

fopen は、ファイルを指定したモードで開き、そのファイルへの「鍵」となるファイルポインタを返す関数です。

基本構文: fp = fopen("ファイル名", "オープンモード");

もしファイルを開くのに失敗した場合(ファイルが存在しない、アクセス権がないなど)、fopenNULL という特別な値を返します。そのため、fopen を使った直後には、必ず NULL かどうかをチェックするのが鉄則です。

ファイルのオープンモード

fopen の2番目の引数で、ファイルをどのような目的で開くかを指定します。

モード説明ファイルがない場合ファイルがある場合
"r"読み込み (Read)エラー先頭から読み込む
"w"書き込み (Write)新規作成内容が全て消去され上書きされる
"a"追記 (Append)新規作成ファイルの末尾に追加する
"r+"読み書きエラー先頭から読み書きできる
"w+"読み書き新規作成内容が全て消去され読み書きできる
"a+"読み書き新規作成末尾に追記、全体を読み込みできる

※画像などのバイナリファイルを扱う場合は、上記モードにbを追加します(例: "rb", "wb+")。

fopen の基本的な使い方とエラー処理

#include <stdio.h>

int main(void) {
    FILE *fp;

    // "my_document.txt"を読み込みモードで開く
    if ((fp = fopen("my_document.txt", "r")) == NULL) {
        // ファイルが開けなかった場合の処理
        printf("ファイルのオープンに失敗しました。\n");
        return 1; // 異常終了
    }

    // --- ここでファイルを使った処理を行う ---
    printf("ファイルのオープンに成功しました。\n");

    // ファイルを閉じる(後述)
    fclose(fp);

    return 0; // 正常終了
}

ファイルパスの指定方法(絶対パスと相対パス)

ファイル名を指定する方法には2種類あります。

  • 相対パス: fopen("my_document.txt", "r");
    • 実行ファイルがある場所を基準とした位置関係でファイルを指定します。簡単ですが、実行場所が変わるとファイルを見つけられなくなります。
  • 絶対パス: fopen("C:\\Users\\MyName\\Desktop\\my_document.txt", "r");
    • ディスクのルートディレクトリからの完全な経路で指定します。どこから実行しても同じファイルを指しますが、環境が違うとパスも変わります。
    • 注意: C言語の文字列中では、\ は特殊な意味を持つため、パスの区切り文字として使う場合は \\ のように2つ重ねて書く必要があります。

ファイルを閉じる fclose 関数

ファイルでの作業が終わったら、fclose 関数を使って必ずファイルを閉じる必要があります。

基本構文: fclose(ファイルポインタ);

なぜ fclose が重要なのか?

  • データの保護: 書き込みモードで開いたファイルは、fclose されることで初めて内容がディスクに完全に保存されることが保証されます。閉じ忘れると、データが失われる可能性があります。
  • リソースの解放: OSがプログラムのために確保していたファイル関連のメモリやリソースを解放します。多数のファイルを開いたままにすると、システムが不安定になる原因になります。

fopen でファイルを開いたら、処理の最後には必ず対応する fclose を書く、と覚えておきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次