【发布时间】:2019-11-04 17:21:30
【问题描述】:
我有一个包含以下序列的二进制文件:
0-9 char name[10];
10-11 unsigned int n;
12-12+2x4n float coords[n][2];
我需要将其加载到结构的动态数组中。
我想将文件中的所有信息保存在类型结构中: 所以我声明了一个这样的结构:
typedef struct{
char name[10]
unsigned int n;
float coords[][2];
}sprites_t;
然后我创建一个函数将其加载到内存中:
size_t n = 0;
sprites_t * s = malloc(sizeof(sprites_t)*INITIAL_PACKAGE);
size_t reads;
while((reads = fread(s + n,sizeof(sprites_t),INITIAL_PACKAGE,fi)) == INITIAL_PACKAGE ){
sprites_t * aux = realloc(s,sizeof(sprites_t) * (n+INITIAL_PACKAGE));
if (aux == NULL) {
free(s);
return EXIT_FAILURE;
}
s = aux;
n += INITIAL_PACKAGE;
}
n += reads;
我无法在记忆中随心所欲地制作这个东西。因为在二进制文件中我有一个“unsigned int n”,它是具有坐标矩阵的行数,所以我的结构是灵活的。我怎样才能读到那个 N?并在此基础上,利用文件提供的信息完成建筑结构。
我真的不知道我的代码是否可以。如果有人有另一种策略来加载动态结构数组上的信息,欢迎加入。
【问题讨论】:
标签: c file struct binary fread