In MS Windows fread() behaves differently than on UNIX systems when
reading binary files if we do not specify "b" in the mode when opening
the file.
Quoting FOPEN(3) man page:
... the 'b' is ignored on all POSIX conforming systems, including
Linux. (Other systems may treat text files and binary files
differently, and adding the 'b' may be a good idea if you do I/O to a
binary file and expect that your program may be ported to non-UNIX
environments.)