从文件加载向量结构

问题描述

我正在执行一个关于用户数据管理的小项目,现在我必须创建一个必须允许从二进制文件(其名称作为参数传递)读取用户列表的过程。 动态分配必须在子程序内进行。文件必须在函数内部打开和关闭。指向动态向量的指针必须分配给“数据”参数的相关字段以及读取的元素数量。 函数原型必须具有以下形式:void loadData(VD *data,char *namefile);

我有两个函数来打开和关闭文件:

 FILE * openFile(char *nameFile,char *mode){
    FILE *fp = fopen(nameFile,mode);

    if(fp == NULL)
        exit(-1);

    return fp;
}

FILE * closeFile(FILE * fp) {

    if (fp != NULL)
        fclose(fp);

    return NULL;

}

我做的loadData函数的实现是这样的:

void loadData(VD *data,char *namefile){
    FILE* f = openFile(namefile,"r");
    char string[200]; //I don't know what size to give to the string
    while(!feof(f)){
     fgets(string,200,f);
    }
    closeFile(f);
}

我的疑惑是这种情况下我不知道怎么做动态分配,我什至不明白是什么意思:“动态向量的指针必须分配给'data”的相关字段' 参数以及读取的元素数。"

在txt文件里面我有一系列人物数据,这里是一个例子:https://pastebin.com/s4LxFNGE

PS 这是 VD:

typedef struct{
    RecordSubj *v;  //RecordSubj is a structure that contains all the data of a subject,the same ones that are present in the link I put above
    int nElements;
} VD;

这是RecordSubj的实现

typedef struct {
    char name[SIZE_NAME + 1];
    char surname[SIZE_SURNAME + 1];
    int height;
    float weight;
    char eyeColor[DIM_COLOR];
    char hairColor[DIM_COLOR];
    hair hairLength;
    _Bool beard;
    _Bool scar;
    char key[DIM_KEY];
    char lives[SIZE_LIVES + 1];
    GPSPosition position;
    StateOf state;
} RecordSubj;

你能帮我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)