c 写二进制的问题,与期望不一致,大神求助一下
c吧
全部回复
仅看楼主
level 1
hzh00772 楼主
本人写了一个
#include "StdAfx.h"
#include <stdio.h>
#include <stdlib.h>
//using namespace std;
struct BlockInfo {
double x;
double y;
double h;
};
int main() {
//FILE *f1=fopen("c:\\1\\2.csv","r");
FILE* f = fopen("c:\\1\\booltest", "w");
BlockInfo* blockInfo = (BlockInfo*)malloc(sizeof(blockInfo));
//493161.66,4478847.05,188
blockInfo->x=493161.66;/////将该值改为 193161.66 就占 24个字节 可没有溢出呀? 问题载哪呢???
blockInfo->y=4478847.05;
blockInfo->h=188.00;
fwrite(blockInfo, sizeof(BlockInfo), 1, f);
fclose(f);
printf("ok");
return 0;
}
将数据写到二进制文件的程序,三个双精度数,本以为占24个字节,实际是25个,求助大神!
2020年12月26日 14点12分 1
level 6
有任何问题可以进来大佬们免费解答
2020年12月27日 08点12分 2
level 2
3D 0D 0A D7 A3 A6 19 1E 41 33 33 33 C3 DF 15 51
41 00 00 00 00 00 80 67 40
25字节
7B 14 AE 47 4D 94 07 41 33 33 33 C3 DF 15 51 41
00 00 00 00 00 80 67 40
24字节
从文件读出
int main() {
//FILE *f1=fopen("c:\\1\\2.csv","r");
FILE* f = fopen("booltest", "w");
BlockInfo* blockInfo = (BlockInfo*)malloc(sizeof(blockInfo));
//493161.66,4478847.05,188
//blockInfo->x=493161.66;/////将该值改为 193161.66 就占 24个字节 可没有溢出呀? 问题载哪呢???
blockInfo->x=193161.66;
blockInfo->y=4478847.05;
blockInfo->h=188.00;
printf("x=%f\n",blockInfo->x);
printf("y=%f\n",blockInfo->y);
printf("z=%f\n",blockInfo->h);
printf("size=%d\n",sizeof(BlockInfo));
fwrite(blockInfo, sizeof(BlockInfo), 1, f);
fclose(f);
printf("ok\n\n");
f = fopen("booltest", "r");
fread(blockInfo, sizeof(BlockInfo), 1, f);
printf("x=%f\n",blockInfo->x);
printf("y=%f\n",blockInfo->y);
printf("z=%f\n",blockInfo->h);
fclose(f);
system("pause");
return 0;
}
x=193161.660000
y=4478847.050000
z=188.000000
size=24
ok
x=193161.660000
y=4478847.050000
z=188.000000
请按任意键继续. . .
读出没错
x=493161.660000
y=4478847.050000
z=188.000000
size=24
ok
x=493161.660000
y=4478847.050000
z=188.000000
请按任意键继续. . .
读出也没错
2021年02月17日 04点02分 3
1