---
name: "fread"
section: "3"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/fread"
---

# fread(3)

binary stream input/output

## NAME

**fread**, **fwrite** – binary stream input/output

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<stdio.h\>**

*size\_t*\

**fread**(*void \*restrict ptr*, *size\_t size*, *size\_t nitems*, *FILE \*restrict stream*);

*size\_t*\

**fwrite**(*const void \*restrict ptr*, *size\_t size*, *size\_t nitems*, *FILE \*restrict stream*);

## DESCRIPTION

The function **fread**() reads *nitems* objects, each *size* bytes long, from the stream pointed to by *stream*, storing them at the location given by *ptr*.

The function **fwrite**() writes *nitems* objects, each *size* bytes long, to the stream pointed to by *stream*, obtaining them from the location given by *ptr*.

## RETURN VALUES

The functions **fread**() and **fwrite**() advance the file position indicator for the stream by the number of bytes read or written. They return the number of objects read or written. If an error occurs, or the end-of-file is reached, the return value is a short object count (or zero).

The function **fread**() does not distinguish between end-of-file and error; callers must use [feof(3)](/feof/3.md) and [ferror(3)](/ferror/3.md) to determine which occurred. The function **fwrite**() returns a value less than *nitems* only if a write error has occurred.

## SEE ALSO

[read(2)](/read/2.md), [write(2)](/write/2.md)

## STANDARDS

The functions **fread**() and **fwrite**() conform to ISO/IEC 9899:1990 (“ISO C90”).
