FREAD

Section: Linux Programmer's Manual (3)
Updated: 2020-08-13
Index JM Home Page
 

名前

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) を参照。
インターフェース 属性 値
fread(), fwrite() Thread safety MT-Safe
 

準拠

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/ に書かれている。

関連キーワード

buffer   fread   size   stdio   sizeof   ストリーム   バイト   magic   exit   fwrite   ポインター   場所   個々   個数   fopen   fprintf   stderr   failed   printf   バイナリ   入出力   格納   停止   成功   読み書き

Linux マニュアル 一覧

関連するコマンド・関数

fread.3   pthread_key_create.3   stpcpy.3   readlink.2   readlinkat.2   getprotobyname_r.3
 

Index

名前
書式
説明
返り値
属性
準拠
例
プログラムのソース
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:16 GMT, October 11, 2026