FREAD(3s,L) AIX Technical Reference FREAD(3s,L) ------------------------------------------------------------------------------- fread, fwrite PURPOSE Performs binary input/output. LIBRARY Standard I/O Library (libc.a) SYNTAX #include int fread (ptr, size, nitems, stream) void *ptr; size_t size; size_t nitems; FILE *stream; int fwrite (ptr, size, nitems, stream) void *ptr; size_t size; size_t nitems; FILE *stream; DESCRIPTION The fread subroutine copies nitems items of data from the input stream into an array beginning at the location pointed to by the ptr parameter. Each data item has the type *ptr. The fread subroutine stops copying bytes if an end-of-file or error condition is encountered while reading from the input (1) specified by the stream parameter or (2) when the number of data items specified by the nitems parameter have been copied. fread leaves the file pointer of stream, if defined, pointing to the byte following the last byte read, if there is one. The fread subroutine does not change the contents of stream. The fwrite subroutine appends nitems items of data of the type *ptr from the array pointed to by the ptr parameter to the output stream. The fwrite subroutine stops writing bytes if (1) an error condition is encountered on stream or (2) when the number of items of data specified by the nitems parameter have been written. The fwrite subroutine does not change the contents of the array pointed to by the ptr parameter. RETURN VALUE Processed November 7, 1990 FREAD(3s,L) 1 FREAD(3s,L) AIX Technical Reference FREAD(3s,L) The fread and fwrite subroutines return the number of items actually read or written. If the nitems parameter is negative or 0, no characters are read or written, and a value of 0 is returned. ERROR CONDITIONS The fread subroutine fails if one or more of the following are true: EAGAIN The O_NONBLOCK flag is set for the file descriptor underlying stream and the process would be delayed in the fgetc operation. EBADF The file descriptor underlying stream is not a valid file descriptor open for reading. EINTR The read operation was terminated due to the receipt of a signal and no data was transferred. EIO The process is a member of a background process attempting to read from its controlling terminal, the process is either ignoring or blocking the SIGTTIN signal or the process group is orphaned. ENOMEM Insufficient storage space is available. ENXIO A request was made of a non-existent device, or the request was outside the capabilities of the device. The fwrite subroutine fails if one or more of the following is true: EAGAIN The O_NONBLOCK flag is set for the file descriptor underlying stream and the process would be delayed in the write operation. EBADF The file descriptor underlying stream is not a valid file descriptor open for writing. EFBIG An attempt was made to write to a file that exceeds the process's file size limit or the maximum file size. EINTR The write operation was terminated due to the receipt of a signal and no data was transferred. EIO The process is a member of a background process group attempting to write to its controlling terminal, TOSTOP is set, the process is neither ignoring nor blocking SIGTTOU and the process group of the process is orphaned. ENOSPC There was no free space remaining on the device containing the file. ENXIO A request was made of a non-existent device, or the request was outside the capabilities of the device. Processed November 7, 1990 FREAD(3s,L) 2 FREAD(3s,L) AIX Technical Reference FREAD(3s,L) EPIPE An attempt is made to write to a pipe or FIFO that is not open for reading by any process. A SIGPIPE signal will also be sent to the process. ENOMEM Insufficient storage space is available. RELATED INFORMATION In this book: "fopen, freopen, fdopen," "getc, fgetc, getchar, getw, getwc, fgetwc, getwchar," "gets, fgets, getws, fgetws," "printf, fprintf, sprintf, NLprintf, NLfprintf, NLsprintf, wsprintf," "putc, putchar, fputc, putw, putwc, putwchar, fputwc," "puts, fputs, putws, fputws," "read, readv, readx," "scanf, fscanf, sscanf, NLscanf, NLfscanf, NLsscanf, wsscanf," "stdio," and "write, writex." Processed November 7, 1990 FREAD(3s,L) 3