はじめての C

この page だと 思うんだけど、
http://www.tofla.iconbar.com/tofla/c/cfy11/

ファイルの 取扱い

今月の tutorial の 仕上げとして、ファイル 出力先の 変更は どうするかを、手短に 見てみましょう。

これらの 操作を 行う 関数は、上で 使った*1のに とても 似ている fprintf() と fscanf() です。

こうした 類似点は、C では その入出力を 同じ 方法で 扱うよう 試みているという 事実から 生じています。

そのため、スクリーンに 表示するか、あるいは ファイルへ 保存するか どうかも、すべて 同じ メカニズムに よるのです。

この 2つの 特別な 関数に いく前に、ファイルに データを 貯えるための fopen() と fclose() という 関数について 知る 必要が あります。

データを 保存する前に、システムへは 何らかの 指示が 与えられないと いけません。 それによって、その情報を どこに 貯えるかを 知るからです。

逆に、ファイルの 使用を 止めたときには、すべての 更新を 完全にし ものごとを 片付けるため、それを 閉じなければ なりません。

ファイルを 開く 際には、その開いた ファイルと 同一 number の 書式 - handle が 与えられます。

これにより、handle を、その ファイル名で 参照する かわりに、使用します。

  FILE *handle;
if )((handle = fopen("testfile", "w"))( == 0)
{
printf("Test file counld not be opened.\n");
}

FILE という 変数の 型は stdio.h で 定義されています。 そこには システムが データファイルを 参照するのに 必要な 情報を 含んでいます - そして、この型の 変数の ポインタを 作成する 必要が あります。

ファイルが 開けないときには、fopen() は 0 を 返し、これによって プログラムを チェックするので、たとえ 記録ディスクに 問題が 起きたとしても、上手に 正常に 戻すことが できます。

fopen() の ステートメントには、2つの テキストパラメータを とっており、1つ目は そのファイル名、2つ目の それで ファイルに 必要な アクセスは 何かを 決めています。

上の 例では、ファイル名が testfile、アクセスは "w" という 書き込み 命令用の コマンドに なっています。

アクセスや、同じく 読み取り、書き込みには いくつかの 方法が あり、また 書き込む ときには 元の ファイルの 末尾に つけ加えます。

また、テキストに 変換しない、機械語で 貯えられた 数値を もつ バイナリモードも あります。

いったん、ファイルを 終了させたら、必ず fclose() で 閉じるように してください。

  if (fclose(handle) != 0)
{
printf("File couldn't be closed.\n");
}

ファイルが 正しく 閉じられれば、同じく 関数 fclose は 0 を 返すので、ここでの チェックは 大事です。

さて、思いどおりに ファイルの 開閉は できるように なりましたが、実は まだ、少しだけ 確実では ありません。

次の 月では、入出力の ルーティンを いくつか つけ加えて 補うことに しましょう。

*1: printf() と scanf()