【发布时间】:2020-04-15 11:42:33
【问题描述】:
我有这个结构:
typedef struct{
char name[MAXSTRING]; //MAXSTRING is defined above
int id;
}student;
还有这个student st,我在其中保存了一个名字和一个ID。
我还加载了一个文件:student *stArray = load(argv[1]); //load() 是我打开文件的函数。
现在我想在这个函数中将st的内容添加到stArray中:
int addStudent(student st, student *stArray); //It's supposed to insert an entry
但我不知道怎么做。有人可以帮忙吗?
student *load(char *filename){
FILE *fp = fopen(filename, "ab+");
if (fp == NULL)
{
printf("File does not exist\n");
abort();
}
student *students;
fseek(fp, 0, SEEK_END);
long fileSize = ftell(fp);
if (fileSize == 0)
{
return NULL;
}
int numStudents = fileSize/sizeof(student);
students = (student *)malloc(sizeof(student)*numStudents);
if (students == NULL)
{
printf("Error allocating memory\n");
abort();
}
return students;
}
【问题讨论】:
-
load究竟做了什么?源代码最好。命名表明它加载文件并返回一个学生记录数组,显然它不会这样做,因为在这种情况下工作会完成。 -
不清楚你想让
addStudent做什么。替换程序内存中数组中的一个条目?插入或附加条目,使数组更长?对文件进行一些更改或创建一个新文件? -
需要以读取方式打开文件,然后读取。