0
所以我节省多少有些复杂的结构成一个bin文件如下:如何复制我在同一代码中创建的完全相同的结构?
fwrite(&ca, sizeof(ca), 1, tempor);
for(i=0; i<ca; i++){
fwrite(&alunue[i].ndp, sizeof(int), 1, tempor);
for(j=0; j<alunue[i].ndp; j++){
fwrite(&alunue[i].peract[j].ndu, sizeof(int), 1, tempor);
}
}
fwrite(alunue, sizeof(alumno), ca, tempor);
“tempor”是,在年底取代了我在读“baseda”该文件的文件。
的结构是这样的:
typedef struct name{
char n[125];
} name;
typedef struct uda{
name nomuda;
name clave;
float calif;
} uda;
typedef struct periodo{
int ndu;
name nomper;
uda *uniapr;
} periodo;
typedef struct alumno{
int nua, ndp;
name n, ap, am;
periodo *peract;
struct alumno *a, *s;
} alumno;
我用读它看起来像这样的代码:
fread(&n, sizeof(int), 1, baseda);
alunue = malloc(n*sizeof(alumno));
for (i = 0; i < n; i++) {
fread(&m, sizeof(int), 1, baseda);
alunue[i].peract = malloc(m*sizeof(periodo));
for (j = 0; j < m; j++) {
fread(&o, sizeof(int), 1, baseda);
alunue[i].peract[j].uniapr = malloc(sizeof(uda));
}
}
fread(alunue, sizeof(alumno), n, baseda);
的事情是,正似乎并没有越来越值我存储在第一个地方的温度。
感谢您花时间阅读本文。
@WhozCraig我试图再次读取它之前关闭该文件。 –
你怎么知道“我首先存储的ca的价值”实际上是事实?根本没有你的IO调用被检查。冲洗/关闭之后,您是否对文件进行了hexdump转储? (你在打开基础文件之前冲洗和/或关闭它,是不是?)。此代码需要[最小,完整,可验证的示例](https://stackoverflow.com/help/mcve)重现了我们目前没有的问题。 – WhozCraig