关于如何将浮点类型的数据写入或读出文件的操作

来源:互联网 发布:淘宝红人店铺 编辑:程序博客网 时间:2024/05/24 23:16

写入操作用write(fd, vec_info,  26000000);

注:vec_info为一个内存块的首地址,此内存块共26000000字节,可以分解成13Byte*200万条记录,每条记录就是一个结构体,

此内存块的首地址就是第一条记录的地址,结构体内容如下:

typedef struct record{

    uchar mac_addr[4];

    float balance;

    int time;

    char vec_status;

}__attribute__((packed)) record_t;

 

取浮点数过程如下:

float balance;

ret = read(fd, buffer, 13);  //读取一条记录,每条记录13字节

memcpy(&balance, buffer+4, 4); //从浮点数起始位置开始取4个字节,因为float占4Byte

这样就能成功取出了。

 

在此之前取浮点数总是出错,原因如下:

1buffer为char型的数,人为的将此4字节取出合并为一个float型,这样得出的结果是错的

2 或者将buffer中的4字节取出,放到一个char型数组中如:char aa[4],然后对其进行如下操作:atof(aa), 这样也是错的。

切记。。。。