fopen関数 - ファイルを開く
fopen関数を使うと、ファイルを開くことができます。stdio.hヘッダを読み込むと使えます。
FILE* fopen(const char *file_name, const char *mode);
第一引数は、開きたいファイルのファイル名です。第二引数は、モードです。ファイルオープンに成功すると、ファイルストリームを表現する「FILE*型」の値が返されます。
モードの一覧
モードの一覧です。
| モード | 動作 |
|---|---|
| r | 読み込み(ファイルがないときはエラー) |
| w | 書き込み(ファイルがないときは新規作成) |
| a | 追加書き込み(ファイルがないときは新規作成) |
| r+ | 読み込みと書き込み(ファイルがないときはエラー) |
| w+ | 読み込みと書き込み(ファイルがないときは新規作成) |
| a+ | 読み込みと追加書き込み(ファイルがないときは新規作成) |
書き込みは、ファイルの内容がクリアされ、新しい内容で書き込むことを意味します。追加書き込みは、ファイルの末尾に追加して、書き込むことを意味します。
上記のモードはバイナリモードを意味する「b」と組み合わせることができます。
br bw
デフォルトの動作は、テキストモードオープンされ、Windowsの場合にはファイルに含まれる改行文字である「CR」「LF」の並びが「\n」に置き換えられます。
バイナリモードでは、このような置き換えはされません。
fopen関数のサンプル
fopen関数のサンプルです。
ファイルを読み込む
fopen関数で読み込みモードでファイルを開き、fgetc関数で読み込み、標準出力に出力しています。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
// ファイルを読み込みモードで開く
const char* in_file = "input.txt";
FILE* in_fp = fopen(in_file, "r");
if (in_fp == NULL) {
fprintf(stderr, "Can't open file %s\n", in_file);
exit(1);
}
// 読み込んで、標準出力に出力
int32_t ch;
while(ch = fgetc(in_fp)) {
if (ch == EOF) {
break;
}
fputc(ch, stdout);
}
// ファイルに書き込む
const char* message = "Hello";
fprintf(in_fp, "%s\n", message);
// fopen関数でファイルを閉じる
fclose(in_fp);
}
入力ファイル「input.txt」です。
Hello World!
出力結果です。
Hello World!
ファイルに書き込む
fopen関数で書き込みモードでファイルを開き、fprintf関数で内容を書きこみ、fclose関数で、ファイルを閉じています。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
// ファイルを書き込みモードで開く
const char* out_file = "output.txt";
FILE* out_fp = fopen(out_file, "w");
if (out_fp == NULL) {
fprintf(stderr, "Can't open file %s\n", out_file);
exit(1);
}
// ファイルに書き込む
const char* message = "Hello";
fprintf(out_fp, "%s\n", message);
// fopen関数でファイルを閉じる
fopen(out_fp);
}
C言語ゼミ


