我有以下示例:
#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/