ファイル入出力とは
今まで扱ってきた入出力は標準入出力と呼ばれ、キーボードからの入力やディスプレイへの出力を扱って来ました
しかし、プログラムを終了すると結果もすべて消えてしまいます
ファイル入出力はファイルにデータを保存し、プログラムを閉じても再度読み込み編集することが可能です
しかし、プログラムを終了すると結果もすべて消えてしまいます
ファイル入出力はファイルにデータを保存し、プログラムを閉じても再度読み込み編集することが可能です
ファイルの開閉
ファイルデータを扱うには、まずファイルを開閉する操作を知らないといけません
ファイル型 *ポインタ名 ポインタ名=fopen("ファイル名","モード"); fclose(fp);
ファイル型のポインタという今まで見たこともないものが登場しています
しかし、これは開くファイルの識別子として使うだけなので、特別な操作はありません
これをファイルポインタと呼びます
しかし、これは開くファイルの識別子として使うだけなので、特別な操作はありません
これをファイルポインタと呼びます
fopen関数
ファイルを開く操作をする関数です
ファイル名には開きたいファイル名を文字列として指定します
モードはファイルを開く目的表す文字列です
モードは以下のとおり
ファイル名には開きたいファイル名を文字列として指定します
モードはファイルを開く目的表す文字列です
モードは以下のとおり
モード | 内容 | ファイルがあるとき | ファイルが無いとき |
r | 読み込み | 正常 | エラー(NULL返却) |
w | 書き込み | サイズを0にする(上書き) | ファイルを新規作成 |
a | 追加書き込み | 最後の追記 | ファイルを新規作成 |
r+ | 読み込み+書き込み | 正常 | エラー(NULL返却) |
w+ | 書き込み+読み込み | サイズを0にする(上書き) | ファイルを新規作成 |
a+ | 読み込み+追加書き込み | 最後の追記 | ファイルを新規作成 |
fclose関数
ファイルを閉じる操作をする関数です
ファイルを開閉するだけのプログラム(ファイルが無かった場合新規作成)
FILE *fp; fp=fopen("sample.txt","w"); fclose(fp);
ファイルの入出力操作
さっきのプログラムではまだファイルに対して何も操作を行っていません
ファイル入出力を行う関数は、今まで扱ってきた標準入出力関数と操作が似ており、すぐになじむことが出来ると思います
ファイル入出力を行う関数は、今まで扱ってきた標準入出力関数と操作が似ており、すぐになじむことが出来ると思います
fprintf関数
int num=10; FILE *fp; fp=fopen("sample.txt","w"); fprintf(fp,"%d\n",num); fclose(fp);
ファイルに書式付で書き込み
fscanf関数
int num; FILE *fp; fp=fopen("sample.txt","r"); fscanf(fp,"%d",&num); fclose(fp);
ファイルに書式付で読み込み
fputs関数
FILE *fp; fp=fopen("sample.txt","w"); fputs("abc",fp); fclose(fp);
ファイルへ文字列を1行書き込む
fgets関数
char str[256]; FILE *fp; fp=fopen("sample.txt","r"); fgets(str,sizeof(str),fp); fclose(fp);
ファイルから文字列を1行読み込む
ファイルを開くときの注意
読み込み時にファイルがないとエラーを起こすといいましたが、何も記述しなければ何が問題なのか分かりません
なのでファイルを開く処理するときは、ファイルが開けなかったときの処理も記述します
なのでファイルを開く処理するときは、ファイルが開けなかったときの処理も記述します
FILE *fp; if((fp=fopen("sample.txt","w"))==NULL){ printf("ファイルが開けません\n"); return; fclose(fp);
大体エラーがあった場合処理を終了させます