1.\" Copyright (c) 1990, 1991, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" This code is derived from software contributed to Berkeley by 5.\" Chris Torek and the American National Standards Committee X3, 6.\" on Information Processing Systems. 7.\" 8.\" Redistribution and use in source and binary forms, with or without 9.\" modification, are permitted provided that the following conditions 10.\" are met: 11.\" 1. Redistributions of source code must retain the above copyright 12.\" notice, this list of conditions and the following disclaimer. 13.\" 2. Redistributions in binary form must reproduce the above copyright 14.\" notice, this list of conditions and the following disclaimer in the 15.\" documentation and/or other materials provided with the distribution. 16.\" 3. Neither the name of the University nor the names of its contributors 17.\" may be used to endorse or promote products derived from this software 18.\" without specific prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30.\" SUCH DAMAGE. 31.\" 32.\" @(#)fread.3 8.2 (Berkeley) 3/8/94 33.\" $FreeBSD$ 34.\" 35.Dd April 2, 2022 36.Dt FREAD 3 37.Os 38.Sh NAME 39.Nm fread , 40.Nm fread_unlocked , 41.Nm fwrite , 42.Nm fwrite_unlocked 43.Nd binary stream input/output 44.Sh LIBRARY 45.Lb libc 46.Sh SYNOPSIS 47.In stdio.h 48.Ft size_t 49.Fn fread "void * restrict ptr" "size_t size" "size_t nmemb" "FILE * restrict stream" 50.Ft size_t 51.Fn fread_unlocked "void * restrict ptr" "size_t size" "size_t nmemb" "FILE * restrict stream" 52.Ft size_t 53.Fn fwrite "const void * restrict ptr" "size_t size" "size_t nmemb" "FILE * restrict stream" 54.Ft size_t 55.Fn fwrite_unlocked "const void * restrict ptr" "size_t size" "size_t nmemb" "FILE * restrict stream" 56.Sh DESCRIPTION 57The function 58.Fn fread 59reads 60.Fa nmemb 61objects, each 62.Fa size 63bytes long, from the stream pointed to by 64.Fa stream , 65storing them at the location given by 66.Fa ptr . 67.Pp 68The function 69.Fn fwrite 70writes 71.Fa nmemb 72objects, each 73.Fa size 74bytes long, to the stream pointed to by 75.Fa stream , 76obtaining them from the location given by 77.Fa ptr . 78.Pp 79The 80.Fn fread_unlocked 81and 82.Fn fwrite_unlocked 83functions are equivalent to 84.Fn fread 85and 86.Fn fwrite 87respectively, except that the caller is responsible for locking the stream 88with 89.Xr flockfile 3 90before calling them. 91These functions may be used to avoid the overhead of locking the stream 92and to prevent races when multiple threads are operating on the same stream. 93.Sh RETURN VALUES 94The functions 95.Fn fread 96and 97.Fn fwrite 98advance the file position indicator for the stream 99by the number of bytes read or written. 100They return the number of objects read or written. 101If an error occurs, or the end-of-file is reached, 102the return value is a short object count (or zero). 103.Pp 104The function 105.Fn fread 106does not distinguish between end-of-file and error, and callers 107must use 108.Xr feof 3 109and 110.Xr ferror 3 111to determine which occurred. 112The function 113.Fn fwrite 114returns a value less than 115.Fa nmemb 116only if a write error has occurred. 117.Sh SEE ALSO 118.Xr read 2 , 119.Xr write 2 120.Sh STANDARDS 121The functions 122.Fn fread 123and 124.Fn fwrite 125conform to 126.St -isoC . 127.Sh HISTORY 128The functions 129.Fn fread 130and 131.Fn fwrite 132first appeared in 133.At v7 . 134