【C言語】ファイルの読み込みと書き込み方法について解説

この記事では、C言語でファイルの読み込みと書き込みを行う方法について解説します。

ファイルのオープン方法や、1文字ずつ読み込む方法、一行ずつ読み込む方法、全体を一度に読み込む方法など、基本的な操作方法を詳しく説明します。

また、ファイルの書き込み方法やエラーハンドリングについても解説します。

目次から探す

ファイルの読み込み方法

ファイルのオープン

まず、ファイルを読み込むためには、ファイルをオープンする必要があります。

C言語では、fopen関数を使用してファイルをオープンします。

FILE* fp; // ファイルポインタ
fp = fopen("ファイル名", "モード");

fopen関数の第1引数には、オープンするファイルのパスを指定します。

第2引数には、ファイルをオープンするモードを指定します。

ファイルをオープンするモードには以下のようなものがあります。

オープンモード説明
r読み込みモード。既存のファイルを読み込む。
w書き込みモード。新規にファイルを作成または既存のファイルを上書きする。
a追記モード。既存のファイルの末尾にデータを追加する。ファイルが存在しない場合は新規作成される。
rbバイナリ読み込みモード。バイナリファイルを読み込む。
wbバイナリ書き込みモード。バイナリファイルに書き込む。新規にファイルを作成または既存のファイルを上書きする。
abバイナリ追記モード。バイナリファイルの末尾にデータを追加する。ファイルが存在しない場合は新規作成される。

ファイルをオープンするときは、オープンに成功したかどうかを確認する必要がありますが、fopen関数呼び出し後に、NULLと比較することで確認することができます。

if (fp == NULL) {
    // オープンに失敗した場合の処理
} else {
    // オープンに成功した場合の処理
}

ファイルの読み込み方法

ファイルをオープンしたら、実際にファイルからデータを読み込む方法について説明します。

ファイルから1文字ずつ読み込む方法

ファイルから1文字ずつ読み込むには、fgetc関数を使用します。

int c;
while ((c = fgetc(fp)) != EOF) {
    // 読み込んだ文字に対する処理
}

fgetc関数は、ファイルから1文字を読み込みます。

読み込んだ文字は整数として返され、ファイルの終端に達した場合はEOF(End Of File)が返されます。

ファイルから一行ずつ読み込む方法

ファイルから一行ずつ読み込むには、fgets関数を使用します。

char line[256];
while (fgets(line, sizeof(line), fp) != NULL) {
    // 読み込んだ行に対する処理
}

fgets関数は、指定したバッファに一行分の文字列を読み込みます。

第1引数にはバッファのアドレスを、第2引数にはバッファのサイズを、第3引数にはファイルポインタを指定します。

fgets関数は、読み込める行がなくなるとNULLを返すため、NULLを返すまでループするようにすれば、ファイルの再就業まで順番に読み込むことが可能です。

読み込んだ行は、改行文字も含まれた状態でバッファに格納されます。

ファイル全体を一度に読み込む方法

ファイル全体を一度に読み込むには、fread関数を使用します。

char buffer[1024];
size_t read_size = fread(buffer, sizeof(char), sizeof(buffer), fp);

fread関数は、指定したバッファに指定したサイズ分のデータを読み込みます。

第1引数にはバッファのアドレスを、第2引数にはデータのサイズを、第3引数にはデータの個数を、第4引数にはファイルポインタを指定します。

読み込んだデータのサイズは、fread関数の戻り値として返されます。

以上が、C言語でファイルを読み込む方法の基本的な解説です。

ファイルのオープンや読み込み方法を理解して、自分のプログラムに適切に活用しましょう。

1 2 3 4

目次から探す