I-8-5. 標準入出力ライブラリによるファイル操作

標準入出力ライブラリを用いてファイルを操作する方法を示す。低水準ファイル処理のそれぞれに対応する関数を紹介し、さらに書式付き入出力や利用上の留意点も示す。また一時ファイルを作成する関数についても触れる。

【学習の要点】

* 低水準関数には最低限の機能しか用意されていないが、高水準関数であれば便利な機能も用意されている。

* 高水準関数には、ファイル操作のための標準入出力ライブラリなどが用意されている。

* 高水準関数を使用した場合であっても、基本的なファイル操作の流れは同じである。

図I-8-5. 高水準関数

【解説】

4) ファイル操作に関して

低水準関数には最低限の機能しか用意されていないため、不便な面も多い。それと比べて高水準関数であれば、多少は便利な機能も用意されている。例えば、ファイルの詳細情報(i ノード・ファイルモード・UID・GID・時間情報など)を収集したい場合には、以下に示す関数などを使用するとよい。

* stat、fstat、lstat関数

個々の関数の違いは、情報を得たいファイルの指定方法である。この関数が正常に終了すると、引数で指定したstat構造体に、ファイルの情報が書き込まれる。

* stat構造体

i ノードやファイルモード、UIDとGID、さらには時間情報など、指定したファイルが持つ多くの情報を書き込みための領域。

5) 標準入出力ライブラリに関して

高水準関数を使用した場合であっても、はじめにファイルをオープンして読み込みや書き込みを行い、最後にクローズする流れは同じである。

* ファイルのオープン・クローズや入出力を行う場合には、以下の関数を使用する。

fopen,fread,fwrite,fclose

* バッファに格納されているデータを吐き出す場合には、以下の関数を使用する。

fflush

* ファイル位置子を移動させる場合には、以下の関数を使用する。

fseek

* 入出力ストリームや標準入出力から、1文字読み込んだり書き込んだりする場合には、以下の関数を使用する。

fgetc,getc,getchar,fputc,putc,putchar

6) 書式付き入出力に関して

低水準関数には書式付き出力などの機能がない。書式を考慮した入出力を行いたい場合には、以下の関数を使用する。

* 書式付き文字列の表示関数

printf、fprintf、sprintf

* 書式付き入力関数

scanf、fscanf、sscanf

7) 一時ファイルの作成に関して

* 既存のファイルと重複しない新たなファイルの名前を作成する。

tmpnam

* プログラム終了時に自動的に削除される一時的なバイナリファイルを作る。

tmpfile

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。

フォーラム会員企業専用

記事配信

コンテンツ配信

ユーザログイン