このページは、ファイル処理の流れ を読んでおくと
理解しやすくなります。
バイナリモードでの読み込み
読み込み用ファイル:text.txt
star 123 |
プログラムファイル:program.c
#include <stdio.h>
void main(void) {
FILE* fp;
int ss[1];
fp = fopen("text.txt", "rb");
while (ss=fgetc(fp)!=EOF) {
printf("%c", (char)ss);
}
fclose(fp);
}
読み込み用ファイル:text.txtを読み込んで、
内容を出力するプログラムです。
まず、ファイルストリームポインタを宣言しています。
FILE* fp;
これは、1つのファイルを処理する上で必要なポインタです。
このポインタの中身を知る必要はありません。
続いて、ファイルを読み込み用モードでオープンしています。
fp = fopen("text.txt", "rb");
第2引数は、読み込み用なので、Readの r を指定しています。
そして、バイナリモードでの読み込みなので、
binary の b を追加しています。
次に実際に読み込みを行っています。
while (ss=fgetc(fp)!=EOF) {
printf("%c", (char)ss);
}
fgetc関数は、1文字読み込んでその値を返します。
そして、ファイルから読み込むデータが無くなったら、
EOFが返されるので、
それまで、データを読み込んで出力しています。
出力は、次のようになります。
star 0x0A 0x0D ←改行コードは見えません。
123
最後にファイルのクローズを行っています。
バイナリモードでの書き込み
書き込み用ファイル:text.txt
中身はカラっぽ |
プログラムファイル:program.c
#include <stdio.h>
void main(void) {
FILE* fp;
char ss[] = "star";
int a = 123;
fp = fopen("text.txt", "wb");
fprintf(fp, "%s\n", ss);
fprintf(fp, "%d\n", a);
fclose(fp);
}
書き込み用ファイルに、
いろんなデータを書き込むプログラムです。
ファイルを書き込みモードでオープンしています。
fp = fopen("text.txt", "wb");
第2引数は、書き込み用なので、
Writeの w を指定しています。
そして、バイナリモードでの読み込みなので、
binary の b を追加しています。
次に実際に書き込みを行っています。
fprintf(fp, "%s\n", ss);
fprintf(fp, "%d\n", a);
fprintf関数は、指定したファイルへ書式指定文字列を書き込む関数です。
printf関数のファイル処理バージョンと言う感じです。
ただ、テキストモードと違い、
\nを出力すると、0x0A だけが出力されます。
ファイルへの書き込みが終わったら、ファイルクローズして終了です。
この結果、ファイルの中身は以下のようになります。
star 0x0A ←改行コードは、0x0Aだけ
123 0x0A ←改行コードは、0x0Aだけ