##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::fread

From cppreference.com
< cpp‎ | io‎ | c

Defined in header `<cstdio>` |  |
std::size_t fread( void* buffer, std::size_t size, std::size_t count, std::FILE* stream ); |  |

Reads up to `count` objects into the array `buffer` from the given input stream `stream` as if by calling std::fgetc `size` times for each object, and storing the results, in the order obtained, into the successive positions of `buffer`, which is reinterpreted as an array of unsigned char. The file position indicator for the stream is advanced by the number of characters read.

If the objects are not `TriviallyCopyable`, the behavior is undefined.

If an error occurs, the resulting value of the file position indicator for the stream is indeterminate. If a partial element is read, its value is indeterminate

### [edit] Parameters

buffer | - | pointer to the first object in the array to be read
size | - | size of each object in bytes
count | - | the number of the objects to be read

### [edit] Return value

Number of objects read successfully, which may be less than `count` if an error or end-of-file condition occurs.

If `size` or `count` is zero, `fread` returns zero and performs no other action.

### [edit] Example

Run this code

    #include <iostream>
    #include <cstdio>
    #include <fstream>
    #include <vector>
    int main()
    {
        // prepare file
        std::ofstream("test.txt") << 1 << ' ' << 2 << '\n';
        std::FILE* f = std::fopen("test.txt", "r");

        std::vector<char> buf(4); // char is trivally copyable
        std::fread(&buf[0], sizeof buf[0], buf.size(), f);

        for(char n : buf)
            std::cout << n;

        std::vector<std::string> buf2; // string is not trivially copyable
    // this would result in undefined behavior
    //    std::fread(&buf2[0], sizeof buf2[0], buf2.size(), f);
    }

Output:

    1 2

### [edit] See also

scanf fscanf sscanf | reads formatted input from stdin, a file stream or a buffer (function) [edit]
fgets | gets a character string from a file stream (function) [edit]
fwrite | writes to a file (function) [edit]
C documentation for fread

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/io/c/fread&oldid=57789"