问题描述
我正在执行一个关于用户数据管理的小项目,现在我必须创建一个必须允许从二进制文件(其名称作为参数传递)读取用户列表的过程。
动态分配必须在子程序内进行。文件必须在函数内部打开和关闭。指向动态向量的指针必须分配给“数据”参数的相关字段以及读取的元素数量。
函数原型必须具有以下形式: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 (将#修改为@)