プログラムで扱ったデータを保存したり、外部のファイルから設定を読み込んだりするためには、ファイル入出力の知識が不可欠です。C言語では、ファイル操作を行うための様々な関数が用意されています。
この記事では、その最も基本的かつ重要な第一歩である、ファイルの開き方 (fopen) と閉じ方 (fclose) について、詳しく解説します。
ファイル操作の「鍵」となるFILEポインタ
C言語でファイルを操作するには、まず**FILE型**のポインタ変数(通称:ファイルポインタ)を用意します。このポインタは、プログラムと操作対象のファイルとを繋ぐ「鍵」や「連絡通路」のような役割を果たします。
#include <stdio.h> // ファイル操作には <stdio.h> が必要
int main(void) {
FILE *fp; // ファイルポインタを宣言
// ... この fp を使ってファイルを操作する ...
return 0;
}
ファイルを開く fopen 関数
fopen は、ファイルを指定したモードで開き、そのファイルへの「鍵」となるファイルポインタを返す関数です。
基本構文: fp = fopen("ファイル名", "オープンモード");
もしファイルを開くのに失敗した場合(ファイルが存在しない、アクセス権がないなど)、fopen は NULL という特別な値を返します。そのため、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 を書く、と覚えておきましょう。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
