名称
fread(), fwrite() ― ストリームファイルに対するバッファーされたバイナリの入出力
構文
#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream);
廃止インタフェース
size_t fread_unlocked(
void *ptr, size_t size, size_t nitems, FILE *stream);
size_t fwrite_unlocked(
const void *ptr, size_t size, size_t nitems, FILE *stream);
説明
fread() は stream で指定された入力から、 size バイト長のデータ (null で終了している必要はありません)
を、 nitems 個読み出し、 ptr で指される配列の中にコピーします。 fread() は stream から読み出している途中でファイルの終わりに達するか、エラー状態になった場合、データの配列への追加を中断します。
それ以外の場合は nitems 個のデータが読み出されます。 fread() は、 stream のファイルポインターが定義されていた場合、 最後に読み出したバイトの次のバイトがあれば
その位置を指すようにします。 fread() は stream の内容を変更しません。
fwrite() は ptr の指す配列から、最大 nitems 個のデータを stream で指定された出力の最後に追加します。 fwrite() は nitems 個のデータを書き込みますが、 stream がエラー状態になると追加を中断します。 fwrite() は ptr が指す配列の内容を変更しません。
引き数 size は、 ptr が指すデータの長さを指定するために、擬似関数 sizeof を使って sizeof(*ptr) とするのが普通です。
廃止インタフェース
fread_unlocked() および fwrite_unlocked() は、ストリームファイルに対し、バッファーを介してバイナリデータの入力または出力を行います。
アプリケーション使用法
fread() または fwrite() がストリームに適用された後は、ストリームはバイト指向になります
(orientation(5) を参照)。
戻り値
fread(), fread_unlocked(), fwrite(),
および fwrite_unlocked() は読み取りまたは書み込み項目の数を返します。 size または nitems が 0 の場合、文字列は読み取りも書き込みもされず、0 が返されます。
読み取りエラーか、またはファイルの終わりに達した場合のみ、 nitems より小さい値が返されます。 エラー状態かファイルの終わりに達したのかを判断するためには ferror() または feof() 関数を使用しなければなりません。
警告
fread_unlocked() および fwrite_unlocked() は、現在では既存の
DCE アプリケーションとの互換性を保つためにだけサポートされています。新しいマルチスレッドアプリケーションでは、 fread() と fwrite() を使用してください。
参照
read(2), write(2), fopen(3S), flockfile(3S), getc(3S), gets(3S),
printf(3S), putc(3S), puts(3S), scanf(3S), orientation(5), thread_safety(5)
標準準拠
fread(): AES, SVID2, SVID3, XPG2, XPG3,
XPG4, FIPS 151-2, POSIX.1, ANSI C
fwrite(): AES, SVID2, SVID3, XPG2, XPG3,
XPG4, FIPS 151-2, POSIX.1, ANSI C