输入学生信息,写了循环,为什么只输入一次程序就停止了


//学生结构体
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是在哪里定义的,是不是冲突了。