C,来自bin文件的fread二进制文件

Jam*_*ray 1 c binary fread

我对C很陌生,但我遇到了一个问题...

我的最终目标是从.bin文件读取(然后printf到控制台)二进制文件,但是现在我一步一步地尝试只读第一位...

我的代码:

...
FILE *file = fopen("test1.bin", rb);
int i = 0;
fread(&i, 1, 1, file);
printf("%i\n", i);
...
Run Code Online (Sandbox Code Playgroud)

现在我尝试了三个不同的.bin文件,一个输出0,另外两个输出12个!

当我从文件中读取1位时,为什么输出2/12?不应该是0还是1?我究竟做错了什么?非常感谢.

hmj*_*mjd 6

fread()通话更改为:

fread(&i, sizeof(int), 1, file);
Run Code Online (Sandbox Code Playgroud)

第二个参数是要读取的元素的大小,第三个参数是要读取的元素的数量.发布的代码正在读取一个字节int.

您还应该检查来自fopen()fread()调用的返回值以确保它们成功.