分配的内存-具有数组的结构已经分配

时间:2019-10-14 18:46:29

标签: c malloc allocation

我有以下示例:

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);
 }

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

从文件中提取并填充D的部分。

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

但是我撞车了.. 我不知道为什么..根据我在网上找到的代码,代码对我来说看起来还不错。 请你帮助我好吗 ?

谢谢。

文件看起来像这样:

{{1}}

例如

1 个答案:

答案 0 :(得分:1)

此行:

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

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

尝试

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

顺便说一句:您的编译器是否为此发出警告?