gpt4 book ai didi

c - 使用 C 中的函数从文件读取结构体数组

转载 作者:行者123 更新时间:2023-11-30 17:41:48 25 4
gpt4 key购买 nike

我正在尝试将文件中的信息分配并读取到函数内的结构数组中。数据以 long 形式存储,即条目数,后跟每个条目的键,每个条目的长度为 32 个字符。

我已经设法不在使用代码的函数中做到这一点

FILE *fr=NULL;
fr = fopen (TRANS_FILE, "rb");
long n_total_c=0;
object_dict* cKey;
fread(&n_total_c, sizeof(long), 1, fr);
cKey= malloc (n_total_c*sizeof(object_dict));
int ii=0;
for(ii=0;ii<n_total_c;ii++){
fread(&cKey[ii], sizeof(object_dict)-1, 1, fr);
cKey[ii][33] = "\0";
}

typedef char object_dict[33];

但是,当我将其移动到函数中时,我可以正确分配内存,但将数据读入数组会导致段错误。

关于我在恐惧中做错了什么有什么建议吗?

int openDict(){
FILE *fr=NULL;
fr = fopen (TRANS_FILE, "rb");
long n_total_c=0;
object_dict* cKey;
get_Tokens(&n_total_c,&cKey,fr);
}


void get_Tokens(long* n_total, object_dict** storage_array,FILE* inputfile){
*storage_array=NULL;
size_t read_info=0;
read_info = fread(&n_total, sizeof(long), 1, inputfile);
*storage_array = malloc ( (*n_total) * sizeof(object_dict));

int ii=0;
for(ii=0;ii<*n_total;ii++){
fread((*storage_array)[ii], sizeof(object_dict)-1, 1, inputfile);
}
return;
}

最佳答案

难道不是

read_info = fread(n_total, sizeof(long), 1, input file);

而不是

read_info = fread(&n_total, sizeof(long), 1, inputfile);

关于c - 使用 C 中的函数从文件读取结构体数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com