名 前
fread, fwrite − バ イ ナ リ ス ト リ ー ム の 入 出 力
書 式
#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t
fwrite(const void *ptr, size_t
size, size_t nmemb,
FILE *stream);
説 明
fread() 関 数 は stream ポ イ ン タ ー で 指 定 さ れ た ス ト リ ー ム か ら nmemb 個 の デ ー タ を 読 み 込 み 、 ptr で 与 え ら れ た 場 所 に 格 納 す る 。 個 々 の デ ー タ は size バ イ ト の 長 さ を 持 つ 。
fwrite() 関 数 は ptr で 指 定 さ れ た 場 所 か ら 得 た nmemb 個 の デ ー タ を 、 stream ポ イ ン タ ー で 指 定 さ れ た ス ト リ ー ム に 書 き 込 む 。 個 々 の デ ー タ は size バ イ ト の 長 さ を 持 つ 。 こ れ ら の 処 理 を 停 止 せ ず に 行 い た い と き は 、 unlocked_stdio(3) を 参 照 の こ と 。
返 り 値
成 功 す る と 、 fread() と fwrite() は 読 み 書 き を 行 っ た 要 素 の 個 数 を 返 す 。 size が 1 の 場 合 は 、 こ の 数 字 は 転 送 さ れ た バ イ ト 数 と 等 し い 。 エ ラ ー が 生 じ た 場 合 や 、 フ ァ イ ル の 末 尾 (end−of−file) に 達 し た 場 合 、 返 り 値 は 指 定 し た 個 数 よ り も 小 さ い 値 (ま た は 0) と な る 。
fread() は end−of−file と エ ラ ー を 区 別 し な い の で 、 ど ち ら が 生 じ た か を 判 断 す る た め に は 、 呼 び 出 し 側 で feof(3) と ferror(3) と を 使 用 し な け れ ば な ら な い 。
準 拠
C89, POSIX.1−2001.
関 連 項 目
read(2), write(2), feof(3), ferror(3), unlocked_stdio(3)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。