fopen()は、ストリーム(典型的にはファイル)を開きます。
#include <stdio.h>
FILE *fopen(char *path, char *mode);
この関数は、pathで指定されたストリーム(ファイル)を指定されたモードで開きます。 書き込みのためにファイルを開く場合、ファイルが存在していない場合にはファイルが新たに作成されます。
modeにはファイルをオープンするときのモードを指定します。
modeの値 | 意味 |
---|---|
r | ファイルを読み出すために開く。 |
r+ | 読み出しと書き込みのために開く。 |
w | 書き込みのためにファイルを開き、既存のファイルであればもとのファイルを長さ0にする。 |
w+ | 読み出しと書き込みのために開く。 |
a | ファイルの最後に書き込みのために開く。 |
a+ | ファイルの最後に書き込みと読み出しのために開く。 |
modeにはbを指定することもでき、その場合は開くファイルがバイナリファイルであることを意味しますが、
ANSI Cとの互換性のためだけに指定可能になっていて実際にはなんら影響を与えないことがあります。
プラットフォームや処理系によってはmodeにさらにc、n、tを指定できる場合があります。
この関数はFILE構造体のポインタを返します。この値を使って、たとえばfgets()やfscanf()などで値をファイルなどから読み込んだり、 fprintf()やfputc()などを使って値をファイルなどに書き込んだりします。
次の例は、カレントディレクトリにあるファイルtest.txtを1バイトずつ読み込んでは標準 出力に出力するという作業をファイルの最後まで繰り返す例です。
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *stream;
int c;
stream = fopen("./test.txt", "r");
if (stream == NULL) {
fprintf(stdout, "ファイルを開くことができません.\n");
return;
}
while (!feof(stream))
{
c = fgetc(stream);
fputc(c, stdout);
}
fclose(stream);
return 0;
}