独9.1
独習Cの進捗状況
-------1月21日----------------------------------------
-------1月21日----------------------------------------
fopen
:VS仕様→fopen
↓
#define _CRT_SECURE_NO_WARNINGSでエラー非表示
必要ヘッダファイルは<stdio.h>
ファイルを開いてストリームと結びつける
開く操作によってファイルに結び付けられた構造体へポ
インタを返す
開く作業が失敗するとヌルポインタを返す
モード
編集の内容を表す(簡略自己解釈)
たくさんある。→独習C:P.246
例:
r:読み込み用にテキストファイルを開く
w:書き込み用にテキストファイルを開く
FILE型
サイズ、ファイルの現在位置、アクセスモードなど
ファイルに関する様々な情報を格納する構造体
構造体
1つの名前でアクセスすることのできる変数の集まり
NULL
<stdio.h>ではNULLというマクロがヌルポインタとして定
義されている
※ファイル操作ではポインタが深く結びついているため
ポインタを変更したり、それの指しているオブジェト
を変更すると幸せになれない
※有効なファイルが返されたかどうかは非常に重要なので戻
り値がNULLでないことを"必ず"確認してください
ファイルを開く正しい方法
例:
テキスト入力のためにmyfileという名前のファイルを開く
FILE *fp;
if*1==NULL){
printf("ファイルを開く際にエラーが発生しました\n");
exit(1);/*または自分で作成したエラーハンドラに置き換える*/
}
※ファイルの存在についてそれぞれのモードによって対応が
異なるのでチェックが必要
(ファイルが新規作成されたり、上書きされたりする)
fclose
必要ヘッダファイルは<stdio.h>
ファイルを閉じストリームをファイルから切り離す
「ストリーム」はfopen()で取得した有効なファイルでなけ
ればならない
成功すると0を返し、エラーが起きるとEOFを返す
バッファをフラッシュ
ファイルシステムの実装の多くは効率を上げるためにデ
ィスクへのデータの書き込みを1セクタずつ行う。その
ため出力されたデータは、まずバッファに蓄えられ、1
セクタ分のデータが溜まったところでバッファからディ
スクに物理的に書き込まれます。一般にこれを「バッフ
ァをフラッシュする」と言います。
注意:fclose()
fclose()には決して無効な引数を渡してはなりません。
無効な引数を渡すと、ファイルシステムが損傷を受け、
場合によってはデータを失って復旧できなくなることも
あります。
*1:fp=fopen("myfile","r"