fwrite
Binary stream input/output
Interface
#include <stdio.h>
size_t | fread (void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream) |
size_t | fwrite (const void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream) |
Description
The function fread readsnmemb
objects, each size
bytes long, from the stream pointed to by stream
, storing them at the location given by ptr
.
The function fwrite writes nmemb
objects, each size
bytes long, to the stream pointed to by stream
, obtaining them from the location given by ptr
.
The following code attempts at reading 10 bytes at once from the text file "fred.txt", then it stores them into buffer
and finally it displays this string.
Example:
Example - Binary stream input/output
Workings
#include <stdio.h> int main() { FILE *f; char buffer[11]; if (f = fopen("fred.txt", "rt")) { fread(buffer, 1, 10, f); buffer[10] = 0; fclose(f); printf("first 10 characters of the file:\n%s\n", buffer); } return 0; }
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, and callers must use reference:ferror to determine which occurred. The function fwrite returns a value less thannmemb
only if a write error has occurred.