C写一个函数void init(Student slist[],int *scount,Course clist[],int *ccount, Select sclist[],int *sccount];程序启动运行时通过指定的三个文件装入(如果没有指定或指定失败,则从默认的文件装入)相关必要信息,包括学生信息文件(学号、姓名、性别、年龄)、课程信息文件(课号、课程名、课程学分)、学生选课信息文件(学号、课程号、成绩),并将学生记录条数、课程记录条数以及选课记录条数分别保存到指针变量*scount、*ccount和*sccount中。(slist.txt是学生信息表,clist.txt是课程信息表,sclist.txt是选课信息表)
时间: 2023-06-11 18:08:58 浏览: 75
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT 100
#define MAX_COURSE 50
#define MAX_SELECT 500
typedef struct {
char id[20];
char name[20];
char sex[10];
int age;
} Student;
typedef struct {
char id[20];
char name[50];
int score;
} Course;
typedef struct {
char sid[20];
char cid[20];
int score;
} Select;
void init(Student slist[], int *scount, Course clist[], int *ccount, Select sclist[], int *sccount) {
// 默认文件名
char sfile[] = "slist.txt";
char cfile[] = "clist.txt";
char scfile[] = "sclist.txt";
// 读取文件
FILE *fp;
fp = fopen(sfile, "r");
if (fp == NULL) {
printf("open %s failed\n", sfile);
exit(1);
}
int i = 0;
while (fscanf(fp, "%s %s %s %d", slist[i].id, slist[i].name, slist[i].sex, &slist[i].age) != EOF) {
i++;
}
*scount = i;
fclose(fp);
fp = fopen(cfile, "r");
if (fp == NULL) {
printf("open %s failed\n", cfile);
exit(1);
}
i = 0;
while (fscanf(fp, "%s %[^\n]s %d", clist[i].id, clist[i].name, &clist[i].score) != EOF) {
i++;
}
*ccount = i;
fclose(fp);
fp = fopen(scfile, "r");
if (fp == NULL) {
printf("open %s failed\n", scfile);
exit(1);
}
i = 0;
while (fscanf(fp, "%s %s %d", sclist[i].sid, sclist[i].cid, &sclist[i].score) != EOF) {
i++;
}
*sccount = i;
fclose(fp);
}
int main() {
Student slist[MAX_STUDENT];
Course clist[MAX_COURSE];
Select sclist[MAX_SELECT];
int scount, ccount, sccount;
init(slist, &scount, clist, &ccount, sclist, &sccount);
printf("scount=%d\n", scount);
printf("ccount=%d\n", ccount);
printf("sccount=%d\n", sccount);
return 0;
}
```
以上代码实现了从文件中读取学生、课程和选课信息,并将记录条数分别保存到指针变量中。
阅读全文