ファイルの入出力には「低水準入出力関数」と
「高水準入出力関数」があります。
低水準入出力関数はOS依存の関数で、比較的細かい作業が可能になります。ただし
OS依存と言うことで、プログラムを他のOSに移植するといった場合、プログラムを変更する
必要が生じます。また、関数自体も低機能な関数しか用意されておらず、今まで使ってきた
「printf」関数のように、文字列をフォーマットして出力することもできません。
高水準入出力関数は比較的高機能な関数が用意されているので、「printf」関数のように
フォーマット付きでファイル出力したりすることも容易にできますし、他のOSに移植する際も
ほとんどの場合プログラムの変更はありません。また、バッファリング機能という機能が備わ
っており、低水準入出力関数よりもほとんどの場合に、高速な入出力が可能です。
バッファリング機能とは、簡単に言えばディスクキャッシュのようなものです。
ディスクは、メモリーと違い1バイト毎に管理されているわけではありません。
MS-DOSの2HDフロッピーディスクの場合は、1024バイトが最小単位です。
したがって、1バイト読み込みたい場合でも、1024バイト読み込まなくてはなりません。
バッファリング機能が無い場合、100バイトのファイルを1バイトずつ読み込もうとした場合、
1024×100読み込み作業が行われます。
バッファリング機能が備わっている場合は、1バイト読み込まれると最小単位である
1024バイトをメモリー上に蓄えます。次の1バイトが読み込もうとした場合、ディスクから
ではなく、メモリー上に蓄えられている1024バイトの中から次の1バイトが読み込まれるため、
入出力が早くなるわけです。最近のパソコンには、ディスクキャッシュなどが備わっているため、低水準入出力関数
を使ってもほとんど処理速度には影響しませんが・・・。
低水準入出力関数については次章で解説します。