我在CS类中有一个作业,其描述如下,但我很难动态分配内存,请帮助我,我今天必须提交我的代码 .
我的结构如下:
typedef struct sample{
char* name;
int list_len;
float* value_list;
}sample;
我需要在读取文件时动态分配内存 .
将分隔的Sample数据记录的文件(在文本编辑器中创建 - pico)读取到指向样本结构的指针数组中 . 注意:您可以使用大小为1024的静态大小的数组,但是,数组的每个元素必须是指向样本结构的指针(如上所定义) . 最初,数组的每个元素必须设置为NULL(表示不使用它),然后再设置为动态分配的样本结构(如果要使用它) .
注意:在为示例结构动态分配内存之后,您可以为结构的每个/每个组件提供足够的内存 . 但是,对于作为指针的那个结构的每个组件,我最终还需要为它指向的“事物”分配内存(通过char *认为字符串,通过float *调用数组) . 在通过指向示例结构的指针释放内存时,您还必须记住这一点 .
到目前为止我有这个,我正在尝试使用strtok解析列表 .
void readfile(){
int SIZE = 1024;
sample* arr[SIZE] = {NULL};
FILE* fin;
sample* sample;
fin = fopen("sample.txt", "r");
if (fin == NULL) {
printf("sample.txt could not be opened"\n");
exit(1);
}
else
fgets(arr, SIZE, fin);
while(fin != EOF){
sample = (sample*)malloc(sizeof(sample);
}
}
1 回答
只关注你的记忆问题并忽略代码中的所有其他错误:
所以你有一个指向
sample
的指针数组 . 以下语句将无法编译,因为sample
不是变量,但是,您已关闭:您只需要一个读取行的缓冲区和一个变量来跟踪您在数组中的位置: