我正在尝试读取存储在二进制文件中的4字节数字,但我似乎没有得到正确的输出。这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int res;
FILE *file;
float v;
//Open file
file = fopen("prj3.dat", "rb");
if (!file)
{
printf("Unable to open file input.dat\n");
}
else
{
res = fread(&v, sizeof(v), 1, file);
if(res==-1)
{
printf("Unable to open file input.dat\n");
}
else
{
printf("v = %f\n", v);
}
}
return;
}
我的输出是v = -961576900.0000000,但它应该是v = 3.14159。关于我的问题在哪里的任何想法?
NB。 input.dat是二进制文件:11010000 00001111 01001001 01000000
由于
答案 0 :(得分:4)
确保fread返回相同的sizeof(float)值,这是您正在阅读的大小。还要确保文件光标位于正确的位置,否则请使用fseek。最后,你的文件是用big-endian机器编写的吗?它保存得当吗?代码对我来说似乎没问题。
答案 1 :(得分:0)