gpt4 book ai didi

c - 已分配的内存 - 已分配数组的结构

转载 作者:行者123 更新时间:2023-11-30 14:35:43 25 4
gpt4 key购买 nike

我有以下示例:

#define MAX_SIZE 32 

typedef struct T {
int total_data;
D *data;
} T;

typedef struct D {
int type;
char value[MAX_SIZE];
} D;

我有一个提取和填充 D* 数据的部分;以及打印它的人。

提取和填充D部分从文件中提取数据。

void extract(T *_t) {
// Open file
fscanf(fp, "%d\n", &_t->total_data);
_t->data = malloc(_t->total_data * sizeof(*_t->data);

// Extract and fill
for ( i = 0; i < _t->total_data; i++)
fscanf(fp, "%d:%[^$]\n", &(_t->data[i].type), _t->data[i].value);
}

读取的函数如下所示:

void read(T *_t) {
int i;
for( i = 0; i < _t->total_data; i++)
printf("%d - %s", _t->data[i].type, _t->data[i].value);
}

但是我遇到了崩溃..我不知道为什么..根据我在网上找到的内容,代码看起来对我来说没问题。请你帮助我好吗 ?

谢谢。

文件看起来像这样:

2
0:ABC
1:DEFGHI

例如

最佳答案

这一行:

fscanf(fp, "%d\n", _t->total_data);

无效。 _t->total_data 是一个 int,但您需要一个指向 int 的指针才能扫描数据。

尝试

fscanf(fp, "%d\n", &_t->total_data);
^
note

顺便说一句:你的编译器没有对此发出警告吗?

关于c - 已分配的内存 - 已分配数组的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58382470/

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