C言語でのファイル入出力処理に関する基本的なサンプルコードを以下に示します。
- ファイルへの書き込み
#include <stdio.h>
int main() {
FILE *fp;
// 書き込みモードでファイルを開く(存在しない場合は作成し、既存の場合は内容をクリア)
fp = fopen("sample.txt", "w");
if (fp == NULL) {
printf("ファイルを開けません\n");
return 1;
}
// ファイルにデータを書き込む
fprintf(fp, "最初の行のテキストです\n");
fputs("2行目のテキストです\n", fp);
// ファイルを閉じる
fclose(fp);
printf("データは正常にファイルに書き込まれました\n");
return 0;
}
- ファイルからの読み込み
#include <stdio.h>
int main() {
FILE *fp;
char buffer[255];
// 読み取りモードでファイルを開く
fp = fopen("sample.txt", "r");
if (fp == NULL) {
printf("ファイルを開けません\n");
return 1;
}
printf("ファイルの内容:\n");
// 一行ずつファイルを読み込む
while (fgets(buffer, 255, fp) != NULL) {
printf("%s", buffer);
}
// ファイルを閉じる
fclose(fp);
return 0;
}
- ファイルへの追記
#include <stdio.h>
int main() {
FILE *fp;
// 追記モードでファイルを開く(存在しない場合は作成)
fp = fopen("sample.txt", "a");
if (fp == NULL) {
printf("ファイルを開けません\n");
return 1;
}
// ファイルの末尾に追記する
fprintf(fp, "追加されたテキストです\n");
// ファイルを閉じる
fclose(fp);
printf("内容はファイルに正常に追記されました\n");
return 0;
}
- バイナリファイルの読み書き
#include <stdio.h>
struct Student {
int id;
char name[50];
float score;
};
int main() {
// バイナリファイルへの書き込み
FILE *fp = fopen("students.dat", "wb");
if (fp == NULL) {
printf("ファイルを作成できません\n");
return 1;
}
struct Student student1 = {1, "田中", 85.5};
struct Student student2 = {2, "佐藤", 92.0};
fwrite(&student1, sizeof(struct Student), 1, fp);
fwrite(&student2, sizeof(struct Student), 1, fp);
fclose(fp);
// バイナリファイルからの読み込み
fp = fopen("students.dat", "rb");
if (fp == NULL) {
printf("ファイルを開けません\n");
return 1;
}
struct Student loadedStudent;
printf("学生情報:\n");
while (fread(&loadedStudent, sizeof(struct Student), 1, fp)) {
printf("ID: %d, 名前: %s, 点数: %.1f\n",
loadedStudent.id, loadedStudent.name, loadedStudent.score);
}
fclose(fp);
return 0;
}
注意点
- ファイルを開いた際には必ずファイルポインタがNULLでないか確認し、ファイルが正常に開かれていることを確認してください。
- 処理終了後は必ずファイルを閉じる(fclose)必要があります。
- ファイルを開く際には適切なモードを使用します:
- "r": 読み取り専用
- "w": 書き込み専用(既存内容を上書き)
- "a": 追記モード
- "r+": 読み書き可能(ファイルが存在している必要あり)
- "w+": 読み書き可能(新規作成または上書き)
- "a+": 読み書き可能(追記モード)
- バイナリファイルの場合はモードに'b'を追加します。例:"wb"、"rb"など。