この記事では、C言語でファイルを開いて読み込む方法について解説します。
具体的には、fopen関数
とfgets関数
の使い方や、エラーハンドリングの例を紹介します。
ファイルを開いて読み込むプログラムの例
#include <stdio.h>
int main() {
FILE *file;
char line[100];
// ファイルを開く
file = fopen("sample.txt", "r");
if (file == NULL) {
printf("ファイルを開けませんでした。\n");
return 1;
}
// ファイルから1行ずつ読み込む
while (fgets(line, sizeof(line), file) != NULL) {
printf("%s", line);
}
// ファイルを閉じる
fclose(file);
return 0;
}
上記のプログラムは、ファイルを開いて1行ずつ読み込む方法の例です。
まず、stdio.hヘッダーファイル
をインクルードします。
これは、ファイル操作に必要な関数や定数を提供します。
次に、FILE型
のポインタ変数file
と、文字列を格納するための配列line
を宣言します。
FILE *file;
char line[100];
次に、ファイルを開きます。
fopen関数
を使用して、ファイルを読み込みモード(r
)で開きます。
ファイルが正常に開けなかった場合は、エラーメッセージを表示してプログラムを終了します。
file = fopen("sample.txt", "r");
if (file == NULL) {
printf("ファイルを開けませんでした。\n");
return 1;
}
その後、fgets関数
を使用して、ファイルから1行ずつ読み込みます。
fgets関数
は、指定したサイズの文字列を指定したファイルから読み込みます。
読み込んだ行は、配列line
に格納されます。
fgets関数
がNULL
を返すまで、繰り返し処理を行います。
while (fgets(line, sizeof(line), file) != NULL) {
printf("%s", line);
}
最後に、ファイルを閉じます。
fclose関数
を使用して、開いたファイルを閉じます。
fclose(file);
以上が、ファイルを開いて読み込むプログラムの例です。
実行すると、指定したファイルの内容が1行ずつ表示されます。
エラーハンドリングの例
エラーハンドリングは、プログラムが予期しないエラーに遭遇した場合に、適切な処理を行うための手法です。
ファイルを開いて読み込むプログラムでも、ファイルが存在しない場合や読み込みエラーが発生した場合など、エラーが発生する可能性があります。
このセクションでは、エラーハンドリングの例を紹介します。
まず、ファイルを開く際にエラーチェックを行います。
fopen関数
は、ファイルを開く際にエラーが発生した場合にはNULL
を返します。
そのため、fopen
の戻り値がNULL
であるかどうかをチェックすることで、ファイルのオープンに成功したかどうかを判断することができます。
以下に、ファイルを開いて読み込むプログラムの例を示します。
#include <stdio.h>
int main() {
FILE *file;
char buffer[100];
// ファイルを開く
file = fopen("sample.txt", "r");
if (file == NULL) {
printf("ファイルを開くことができませんでした。\n");
return 1;
}
// ファイルから1行ずつ読み込む
while (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("%s", buffer);
}
// ファイルを閉じる
fclose(file);
return 0;
}
このプログラムでは、fopen関数
でファイルを開いた後、NULL
チェックを行っています。
もしファイルを開くことができなかった場合には、エラーメッセージを表示してプログラムを終了します。
また、fgets関数
を使ってファイルから1行ずつ読み込み、その内容を表示しています。
fgets関数
は、指定したバッファに指定したサイズまでの文字列を読み込みます。
読み込んだ文字列がNULL
でない限り、繰り返し処理を行います。
最後に、ファイルを閉じるためにfclose関数
を呼び出しています。
ファイルを開いたら必ず閉じるようにしましょう。
以上が、ファイルを開いて読み込むプログラムにおけるエラーハンドリングの例です。
エラーチェックを適切に行い、予期しないエラーに対処することが重要です。