fread または fwrite サブルーチン

目的

バイナリー・ファイルの読み取りおよび書き込みを行います。

ライブラリー

標準 C ライブラリー (libc.a)

構文

#include <stdio.h>
size_t fread (Pointer, Size, NumberOfItems, Stream)
void *Pointer;
size_tSize, NumberOfItems;
FILE *Stream;
size_t fwrite (Pointer, Size, NumberOfItems, Stream)
const void *Pointer;
size_t Size, NumberOfItems;
FILE *Stream;

説明

freadサブルーチンは、NumberOfItemsパラメータで指定された数のデータ項目を、入力ストリームからPointerパラメータで指定された場所から始まる配列にコピーする。 各データ項目の形式は *ポインターです。

freadサブルーチンは、Streamパラメータで指定された入力からの読み取り中にファイル終端 (EOF) またはエラー状態に遭遇した場合、またはNumberOfItemsパラメータで指定された数のデータ項目がコピーされた場合に、バイトのコピーを停止する。 このサブルーチンは、 ストリーム パラメーター (定義されている場合) のファイル・ポインターを、読み取られた最後のバイトの後のバイトを指すままにします。 FREAD サブルーチンは、 ストリーム パラメーターの内容を変更しません。

このst_atimeフィールドには、 FgetCFGETFgetWCフゲッツFREADFScanFGetCゲッチャル取得、または スキャン サブルーチンの最初の正常な実行によって更新のマークが付けられます。これらのサブルーチンは、 アンガまたは ウンジェットウック サブルーチンへの前の呼び出しによって提供されたものではないデータを戻すストリームを使用します。

注: FREAD サブルーチンは、バッファーに入れられた 読み取り サブルーチン・ライブラリー呼び出しです。 4KB ブロック内のデータを読み取ります。 4KBより大きいテープ・ブロック・サイズの場合は、 オープン サブルーチンと 読み取り サブルーチンを使用してください。

書き込み サブルーチンは、 ポインター パラメーターが指す配列からの項目を、 ストリーム パラメーターが指すストリームに書き込みます。 各項目のサイズは、 サイズ パラメーターによって指定されます。 fwriteサブルーチンは、NumberOfItemsパラメータで指定された数の項目を書き込む。 ストリームのファイル位置標識は、正常に書き込まれたバイト数だけ拡張されます。 エラーが発生すると、ストリームのファイル位置標識の結果の値は不確定になります。

書き込み サブルーチンは、 ポインター パラメーターが指す配列からの項目を出力ストリームに追加します。 fwriteサブルーチンは、NumberOfItemsパラメータで指定された数の項目を追加する。

fwriteサブルーチンは、ストリーム上でエラー状態が発生した場合、またはNumberOfItemsパラメータで指定された数のデータが書き込まれた場合に、バイトの書き込みを停止する。 書き込み サブルーチンは、 ポインター パラメーターが指す配列の内容を変更しません。

このst_ctimeおよびst_mtime書き込み サブルーチンが正常に実行されてから、同じストリーム上の フルーシュ または フクローズ サブルーチンに対する呼び出し、 出口 サブルーチンに対する次の呼び出し、または 中止 サブルーチンに対する次の呼び出しが完了するまでの間に、フィールドに更新のマークが付けられます。

パラメーター

項目 説明
ポインター 配列. を指します。
Size ポインター パラメーターによって指される配列の変数タイプのサイズを指定します。 サイズ パラメーターは、 サイズ サブルーチンの呼び出しと同じと見なすことができます。
NumberOfItems データの項目数を指定します。
stream 入力ストリームまたは出力ストリームを指定します。

戻り値

FREAD および 書き込み サブルーチンは、実際に転送された項目の数を戻します。 NumberOfItemsパラメータに0が含まれる場合、文字は転送されず、0が返される。 NumberOfItemsパラメータに負の数が含まれている場合、NumberOfItemsパラメータは符号なし型であるため、正の数に変換される。

エラー・コード

入出力ストリームがバッファーに入れられていないか、またはデータを入出力ストリームのバッファーに読み取る必要があるために FREAD サブルーチンが失敗した場合は、以下のエラー・コードの 1 つ以上を戻します。

項目 説明
EAGAIN ストリーム パラメーターで指定されたファイル記述子に対して O_ 非ブロック フラグが設定され、 FREAD 操作でプロセスが遅延することを示します。
EBADF ストリーム パラメーターによって指定されたファイル記述子が、読み取り用にオープンされた有効なファイル記述子ではないことを示します。
EINTR 信号を受信したために読み取り操作が終了し、データが転送されなかったことを示します。
注: アプリケーションがどのライブラリー・ルーチンにバインドするかによって、このサブルーチンは EINTR (E)を戻すことがあります。 再始動の保存については、 信号 サブルーチンを参照してください。
項目 説明
EIO プロセスが、その制御端末から読み取りを実行しようとしているバックグラウンド・プロセス・グループのメンバーであり、プロセスが シティチン シグナルを無視またはブロックしているか、プロセス・グループに親プロセスがないことを示します。
ENOMEM 使用可能なストレージ・スペースが不足していることを示します。
ENXIO 存在しない装置から要求が出されたことを示す。

入出力ストリームがバッファーに入れられていないか、または入出力ストリームのバッファーをフラッシュする必要があるために 書き込み サブルーチンが失敗した場合は、以下のエラー・コードの 1 つ以上を戻します。

項目 説明
EAGAIN Stream パラメーターで指定されたファイル記述子に対して O_NONBLOCK または O_NDELAY フラグが設定され、書き込み操作でプロセスが遅延することを示します。
EBADF ストリーム パラメーターで指定されたファイル記述子が、書き込み用にオープンされた有効なファイル記述子ではないことを示します。
EFBIG プロセス制限のファイル・サイズまたはシステム全体の最大ファイル・サイズを超えるファイルを書き込もうとしたことを示します。
EINTR シグナルを受信したために書き込み操作が終了し、データが転送されなかったことを示します。
EIO プロセスがその制御端末への書き込みを試行するバックグラウンド・プロセス・グループのメンバーであること、 停止 シグナルが設定されていること、プロセスが SIGTTOU (S) シグナルを無視もブロックもしていないこと、およびプロセスのプロセス・グループが孤立していることを示します。
ENOSPC ファイルが入っている装置にフリー・スペースが残っていないことを示します。
EPIPE どのプロセスによっても読み取りのためにオープンされていないパイプまたは先入れ先出し (FIFO) プロセスへの書き込みが試行されたことを示します。 シGPIPE シグナルがプロセスに送信されます。

書き込み サブルーチンも、以下のエラー条件のために失敗します。

項目 説明
ENOMEM 使用可能なストレージ・スペースが不足していることを示します。
ENXIO 要求が存在しない装置で作成されたか、要求が装置の機能外であったことを示します。