【发布时间】:2020-02-11 09:56:45
【问题描述】:
我有以下示例:
#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
例如
【问题讨论】:
-
到目前为止我只查看了代码...始终确保 malloc 没有返回
NULL。特别是考虑到您正在从文件中读取的事实,您可能会耗尽内存。总是假设你可能会用完内存:)
标签: c malloc allocation