//学生结构体
typedef struct Student {
char num[15];//学号
char name[15];//姓名
char major[10];//专业(computer,software,network)
int classNo;//班级(1-2)
int score[3];//3门课的成绩(0-2)
}STU;
//向文件中输入学生信息
void Input(STU *p, int n) {
printf("请输入学生的姓名,学号,专业,班级,三门课的成绩:\n");
for (int i = 0; i < n; i++) {
scanf("姓名:%s,学号:%s,专业:%s,班级:%d,成绩1:%d, 成绩2:%d, 成绩3:%d\n", &p[i].name, &p[i].num, &p[i].major, &p[i].classNo, &p[i].score[0],&p[i].score[1],&p[i].score[2]);
}
}
调用函数是Input(&student[N], N);
前面已经定义过N是10
修改后的代码:
//学生结构体
typedef struct Student {
char num[15];//学号
char name[15];//姓名
char major[10];//专业(computer,software,network)
int classNo;//班级(1-2)
int score[3];//3门课的成绩(0-2)
} STU;
//向文件中输入学生信息
void Input(STU *p, int n) {
printf("请输入学生的姓名,学号,专业,班级,三门课的成绩:\n");
for (int i = 0; i < n; i++) {
printf("姓名:");
scanf("%s", p[i].name);
printf("学号:");
scanf("%s", p[i].num);
printf("专业:");
scanf("%s", p[i].major);
printf("班级:");
scanf("%d", &(p[i].classNo));
printf("成绩1:");
scanf("%d", &(p[i].score[0]));
printf("成绩2:");
scanf("%d", &(p[i].score[1]));
printf("成绩3:");
scanf("%d", &(p[i].score[2]));
}
}
两个问题:
1.在scanf函数的格式字符串中,使用了冒号(:)来指定输入的格式,但实际上不需要冒号。
2.在scanf函数中,不需要使用&符号来获取字符数组的地址。
完整代码看一下,你这里是作为参数的n,你说的大N是在哪里定义的,是不是冲突了。