Man page - fwrite(3)

Packages contains this manual

Available languages:

en fr pt_BR es pl ko ja ru ro de

Manual

FREAD

名 前
書 式
説 明
返 り 値
属 性
準 拠

プ ロ グ ラ ム の ソ ー ス
関 連 項 目
こ の 文 書 に つ い て

名 前

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) と な る 。

The file position indicator for the stream is advanced by the number of bytes successfully read or written.

fread () は end-of-file と エ ラ ー を 区 別 し な い の で 、 ど ち ら が 生 じ た か を 判 断 す る た め に は 、 呼 び 出 し 側 で feof (3) と ferror (3) と を 使 用 し な け れ ば な ら な い 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-26731-1.png

準 拠

POSIX.1-2001, POSIX.1-2008, C89.

The program below demonstrates the use of fread () by parsing /bin/sh ELF executable in binary mode and printing its magic and class:

$ ./a.out
ELF magic: 0x7f454c46
Class: 0x02

プ ロ グ ラ ム の ソ ー ス

#include <stdio.h>
#include <stdlib.h>

#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))

int
main(void)
{
FILE *fp = fopen("/bin/sh", "rb");
if (!fp) {
perror("fopen");
return EXIT_FAILURE;
}

unsigned char buffer[4];

size_t ret = fread(buffer, ARRAY_SIZE(buffer), sizeof(*buffer), fp);
if (ret != sizeof(*buffer)) {
fprintf(stderr, "fread() failed: %zu\n", ret);
exit(EXIT_FAILURE);
}

printf("ELF magic: %#04x%02x%02x%02x\n", buffer[0], buffer[1],
buffer[2], buffer[3]);

ret = fread(buffer, 1, 1, fp);
if (ret != 1) {
fprintf(stderr, "fread() failed: %zu\n", ret);
exit(EXIT_FAILURE);
}

printf("Class: %#04x\n", buffer[0]);

fclose(fp);

exit(EXIT_SUCCESS);
}

関 連 項 目

read (2), write (2), feof (3), ferror (3), unlocked_stdio (3)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。