从文件中读取双二进制数据

时间:2016-11-24 16:49:34

标签: c file binary

我正在尝试从文件中读取二进制数据,将其转换为double类型的数字并将其打印到屏幕上。我可以使用它来处理字节和整数数据,但是当我尝试将其转换为双精度数时,我得到的只是0。应该是double类型的数量为0,但二进制形式的数字不是零。

int input_fd = open("nameoffile",O_RDONLY);
size_t ret_in;
char buffer = 0;
while((ret_in = read (input_fd,&buffer,sizeof(double)*1)) >0){
    printf("%f ", (double)buffer);
}
printf("\n");
close(input_fd);

正如我所说,当我使用sizeof(int)* 1和(int)缓冲区以及字节数据而不是双数据时,这适用于整数。

1 个答案:

答案 0 :(得分:2)

您正在使用1字节宽的缓冲区。由于您正在阅读int并将其复制到sizeof(int)缓冲区,因此它与sizeof(char)“合作”这一事实只是误报。

如果您想阅读double,请使用double作为目标缓冲区,例如:

double buffer;

while((ret_in = read (input_fd, &buffer, sizeof(double))) >0) {
    printf("%f ", (double)buffer);
}