2 ファイルの種類

2.1 ファイルとC言語プログラム

1つの単位として取り扱えるデータの集合をファイルと言い、その集合には名前(ファイル 名)が付けられている。通常は、ハードディスクのような外部記憶装置上に保存されてい る。ファイルはオープンすることによって、ストリーム2と関連付 けられる。

Cプログラムがファイルをオープンすると、ファイルとCプログラムは、ストリームによっ て結ばれる。これを、図[*]に示す。Cプログラムとファイルを結びつ けるものがストリームというものである。このストリームと言う概念は、他のプログラミ ング言語でも出てくるので覚えておいた方が良い。

図 1: プログラムとストリーム、ファイルの関係
\includegraphics[keepaspectratio, scale=1.0]{figure/c_stream_file.eps}

ここでは、ほとんどの場合、ファイルはハードディスクを示すが、実際にはディスプレイ やキーボード、メモリーなど様々なデバイスである。

2.2 バイナリーファイルとテキストファイル

ストリームに流れるデータは、バイナリーデータとテキストデータがある。バイナリーデー タ3の場合、コンピューターで取り扱っているデータそのもの である。一方、テキストデータの場合、データはASCII文字に変換される。これでは、何 のことか分からないと思うので、データ(整数の1234と文字列"akita")をテキストとバイ ナリーで保管されたファイルを、図23に示す。 テキストデータの方は、通常のテキストエディターで内容を見ることができるが、バイナ リーデータの方は意味不明の文字が書かれる。バイナリーデータを見るためには、図 5のようにバイナリーエディターで見るしかない。それでも、書か れている内容を理解することは難しい4

ようするに、テキストデータの方が簡単である。この授業ではテキストデータしか取り扱 わないことにする。

図 2: テキストデータ。整数の1234と文字列"akita"。
\includegraphics[keepaspectratio, scale=1.0]{figure/txt_data.ps}
図 3: バイナリーデータ。整数の1234と文字列"akita"。
\includegraphics[keepaspectratio, scale=1.0]{figure/bin_data.ps}
図 4: バイナリーデータをバイナリーモードで表示。
\includegraphics[keepaspectratio, scale=1.0]{figure/bin_data_hex.ps}

2.3 シーケンシャルアクセスとランダムアクセス

ハードディスク上に書かれたデータは、長い巻物に文字が書かれていると思えばよい。巻 物であるから、ページの概念はないが、行はある。また、1行に書かれる文字数の制限も 無いと考えてよい。

この巻物に大量の文字が書かれているとしよう。この文字を、巻物の始めから、そして左 から順番に読むのをシーケンシャルアクセスと言う。一方、あっちこっちに飛んで、いろ いろな場所をつまみ食いのように読むのをランダムアクセスと言う。これらの違いを理解 しておくことが大事である。

この授業では、取り扱いが簡単なシーケンシャルアクセスのみを学習する。ランダムアク セスについては、興味のある者は、自分で学習せよ。

図 5: ファイルのイメージ。
\includegraphics[keepaspectratio, scale=1.0]{figure/file_data.eps}



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成16年11月9日


no counter