C语言 结构体数组指针 与malloc内存分配的问题

从文件中读取学生信息并打印。完成以下编程实验,调试运行程序并完成报告。
设每个学生包含如下信息:姓名专业名称英语成绩线性代数成绩C成绩总成绩

1. 设计一个表示学生信息的结构体 struct student;
2. 编写函数从文件读入所有学生信息:
a) 函数定义 int ReadStudentInfo(const char* filename, struct student** pStudents); 函数返回值:返回学生个数,失败返回-1。输入参数const char* filename:数据文件名;struct student** pStudents:返回读取的学生信息,内存由ReadStudentInfo函数分配,main函数释放。
b) 建议函数流程:
i. 打开数据文件,失败返回-1;
ii. 从头到尾扫描数据文件(即预读一遍)获得学生人数;
iii. 根据学生人数,利用malloc和sizeof等函数或运算符为struct student** pStudents分配内存;《《这个不会啊,不理解。
iv. 利用fseek函数,定位到文件头;
v. 读取数据文件,并把每一条记录通过数组下标法或指针法保存到结构体数组pStudents中;
vi. 关闭文件;
vii. 返回学生人数。
c) 数据文件格式说明:
一行一条学生信息的记录,不同属性用空格隔开,输入数据中无总成绩记录,例如:
张三 通信 89 93 95
李四 网络 88 91 94
王五 物联网 71 94 88

struct student *list;
int count = ReadStudentInfo("假设这是文件名", &list);
这个函数是这样被调用。
里面应该这样写
int ReadStudentInfo(const char* filename, struct student** pStudents)
{
*pStudents = (struct student*)malloc(sizeof(** pStudents) * n);//假设有n个学生
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-30
这么多,。。。。。。。追问

我的在这,主要解决利用malloc函数分配结构体指针数组..
概括起来就是计算出一值后再创建结构体数组的问题。。

相似回答