# 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.

### 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
stream | - | input file stream to read from

### 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.

### 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

### See also

scanffscanfsscanf | reads formatted input from stdin, a file stream or a buffer (function)
fgets | gets a character string from a file stream (function)
fwrite | writes to a file (function)

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