りーまの日記

特に外向けに配信しているわけではないので読みにくいかもしれませんが参考になれば幸いです

独9.1

独習Cの進捗状況
-------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"