Everything
7.4.11 <stdio.h>

ストリーム入出力用ファイルの入出力に関する処理を行います。

 

以下の定数(マクロ)はすべて処理系定義です。

種別

定義名

説明

定数

(マクロ)

FILE

ストリーム入出力処理で必要とするバッファへのポインタやエラー指示子、終了指示子などの各種制御情報を保存しておく構造体の型です。

_IOFBF

バッファ領域の使用方法として、入出力処理はすべてバッファ領域を使用することを示しています。

_IOLBF

バッファ領域の使用方法として、入出力処理は行単位でバッファ領域を使用することを示しています。

_IONBF

バッファ領域の使用方法として、入出力処理はバッファ領域を使用しないことを示しています。

BUFSIZ

入出力処理において必要とするバッファの大きさです。

EOF

ファイルの終わり(End Of File)すなわちファイルからそれ以上の入力が無いことを示しています。

L_tmpnam*

tmpnam関数によって生成される一時ファイル名の文字列を格納するのに十分な大きさの配列のサイズです。

SEEK_CUR

ファイルの現在の読み書き位置を現在の位置からのオフセットに移すことを示しています。

SEEK_END

ファイルの現在の読み書き位置をファイルの終了位置からのオフセットに移すことを示しています。

SEEK_SET

ファイルの現在の読み書き位置をファイルの先頭位置からのオフセットに移すことを示しています。

SYS_OPEN*

処理系が同時にオープンすることができることを保証するファイルの数です。

TMP_MAX*

tmpnam関数によって生成される一意なファイル名の個数の最大値です。

stderr

標準エラーファイルに対するファイルポインタです。

stdin

標準入力ファイルに対するファイルポインタです。

stdout

標準出力ファイルに対するファイルポインタです。

関数

fclose

ストリーム入出力用ファイルをクローズします。

fflush

ストリーム入出力用ファイルのバッファの内容をファイルへ出力します。

fopen

ストリーム入出力用ファイルを指定したファイル名によってオープンします。

freopen

現在オープンされているストリーム入力出用ファイルをクローズし、新しいファイルを指定したファイル名で再オープンします。

setbuf

ストリーム入出力用のバッファ領域をユーザプログラム側で定義して設定します。

setvbuf

ストリーム入出力用のバッファ領域をユーザプログラム側で定義して設定します。

fprintf

書式に従ってストリーム入出力用ファイルへデータを出力します。

vfprintf

可変個の引数リストを書式に従って指定したストリーム入出力用ファイルに出力します。

printf

データを書式に従って変換し、標準出力ファイル(stdout)へ出力します。

vprintf

可変個の引数リストを書式に従って標準出力ファイル(stdout)に出力します。

sprintf

データを書式に従って変換し、指定した領域へ出力します。

sscanf

指定した記憶域からデータを入力し、書式に従って変換します。

snprintf <-lang=c99>

データを書式に従って変換し、配列に書き込みます。

vsnprintf <-lang=c99>

可変個数の実引数並びをva_listで置き換えたsnprintfと等価です。

vfscanf <-lang=c99>

可変個数の実引数並びをva_listで置き換えたfscanfと等価です。

vscanf <-lang=c99>

可変個数の実引数並びをva_listで置き換えたscanfと等価です。

vsscanf <-lang=c99>

可変個数の実引数並びをva_listで置き換えたsscanfと等価です。

fscanf

ストリーム入出力用ファイルからデータを入力し、書式に従って変換します。

scanf

標準入力ファイル(stdin)からデータを入力し、書式に従って変換します。

vsprintf

可変個の引数リストを書式に従って指定した領域に出力します。

fgetc

ストリーム入出力用ファイルから1文字入力します。

fgets

ストリーム入出力用ファイルから文字列を入力します。

fputc

ストリーム入出力用ファイルへ1文字出力します。

fputs

ストリーム入出力用ファイルへ文字列を出力します。

getc

(マクロ) ストリーム入出力用ファイルから1文字入力します。

getchar

(マクロ) 標準入力ファイルから1文字入力します。

gets

標準入力ファイルから文字列を入力します。

putc

(マクロ) ストリーム入出力用ファイルへ1文字出力します。

putchar

(マクロ) 標準出力ファイルへ1文字出力します。

関数

puts

標準出力ファイルへ文字列を出力します。

ungetc

ストリーム入出力用ファイルへ1文字をもどします。

fread

ストリーム入出力用ファイルから指定した記憶域にデータを入力します。

fwrite

記憶域からストリーム入出力用ファイルにデータを出力します。

fseek

ストリーム入出力用ファイルの現在の読み書き位置を移動させます。

ftell

ストリーム入出力用ファイルの現在の読み書き位置を求めます。

rewind

ストリーム入出力用ファイルの現在の読み書き位置をファイルの先頭に移動します。

clearerr

ストリーム入出力用ファイルのエラー状態をクリアします。

feof

ストリーム入出力用ファイルが終わりであるかどうかを判定します。

ferror

ストリーム入出力用ファイルがエラー状態であるかどうかを判定します。

perror

標準エラーファイル(stderr)に、エラー番号に対応したエラーメッセージを出力します。

fpos_t

ファイル中の任意の位置を指定可能な型です。

定数

(マクロ)

FOPEN_MAX

同時にオープン可能なファイル数です。

FILENAME_MAX

保持可能なファイル名の最大長です。

* 本処理系では、定義されません。

 

処理系定義仕様

 

項目

コンパイラの仕様

1

入力テキストの最終の行が終了を示す改行文字を必要とするかどうか

規定しません。低水準インタフェースルーチンの仕様によります。

2

改行文字の直前に書き出された空白文字は、読み込み時に読み込まれるかどうか

3

バイナリファイルに書かれたデータに付加されるヌル文字の数

4

追加モード時のファイル位置指定子の初期値

5

テキストファイルへの出力によってそれ以降のファイルのデータが失われるかどうか

6

ファイルバッファリングの仕様

7

長さ0のファイルが存在するかどうか

8

正当なファイル名の構成規則

9

同時に同じファイルをオープンできるかどうか

10

fprintf関数における%p書式変換の出力形式

16進数出力となります

11

fscanf関数における%p書式変換の入力形式

fscanf関数での変換文字「-」の意味

16進数入力となります。

先頭、最後あるいは「^」の直後でない場合、直前の文字と直後の範囲を示します。

12

fgetpos,ftell関数で設定されるerrnoの値

fgetpos関数はサポートしていません。

ftell関数については規定しません。

低水準インタフェースルーチンの仕様によります。

13

perror関数が生成するメッセージ出力形式

メッセージの出力形式を(a)に示します。

 

(a) perror関数の出力形式は、

<文字列>:<errorに設定したエラー番号に対応するエラーメッセージ>

となります。

(b) printf関数、fprintf関数で、浮動小数点の無限大および非数を表示するときの形式を表 7.8に示します。

表 7.8

無限大および非数の表示形式

 

表示形式

1

正の無限大

++++++

2

負の無限大

――――――

3

非数

******

 

ストリーム入出力用ファイルに対する一連の入出力処理を行ったプログラムの例を以下に示します。

    1   #include <stdio.h>
    2
    3   void main()
    4   {
    5       int c;
    6       FILE *ifp, *ofp;
    7
    8       if ((ifp=fopen("INPUT.DAT","r"))==NULL){
    9           fprintf(stderr,"cannot open input file\n");
    10          exit(1);
    11      }
    12      if ((ofp=fopen("OUTPUT.DAT","w"))==NULL){
    13          fprintf(stderr,"cannot open output file\n");
    14          exit(1);
    15      }
    16      while ((c=getc(ifp))!=EOF)
    17          putc(c, ofp);
    18      fclose(ifp);
    19      fclose(ofp);
    20  }

 

【説明】

ファイルINPUT.DATの内容をファイルOUTPUT.DATへコピーするプログラムです。

8行目のfopen関数で入力ファイルINPUT.DATを、12行目のfopen関数で出力ファイルOUTPUT.DATをオープンします。オープンに失敗した場合、fopen関数のリターン値としてNULLが返されますので、エラーメッセージを出力してプログラムを終了させます。

fopen関数が正常に終了した時、オープンしたファイルの情報を格納するデータ(FILE型)へのポインタが返されますので、これらを変数ifp、ofpに設定します。

オープンが成功した後は、これらのFILE型のデータを用いて入出力を行います。

ファイルの処理が終了したら、fclose関数でファイルをクローズします。