c语言初学者的痛,这段哪里错了,完全不清楚

//有5位学生,每位学生有3门课的成绩,
//从键盘输入学生学号、姓名、3门课成绩,计算出平均成绩,
//将原有的数据和计算出的平均分数存放在文件studata.txt中;
#include<stdio.h>

int main()
{
char name[10] = { 0 };
int s1 = 0, s2 = 0, s3 = 0, n = 1, m = 1, aver = 0, sum = 0, xh = 0;
while (n <= 5)
{
FILE* pf = fopen("studata.txt", "at+");
if (pf == NULL)
{
perror("fopen");
return 1;
}
printf("请输入第%d个学生的学号:\n", n);
scanf_s("%d", &xh);
fputc(xh, pf);
printf("请输入第%d个学生的姓名:\n", n);
name[10] = gets();
while (name != '\n')
{
fputc(name, pf);
name[10] = getchar();
}
fclose(pf);
pf = fopen("studata.txt", "at+");
if (pf == NULL)
{
perror("fopen");
return 1;
}
printf("请输入第%d个学生的3门成绩:\n", n);
scanf_s("%d %d %d", &s1, &s2, &s3);
while (m <= 5)
{
fputc(s1, pf);
fputc(s2, pf);
fputc(s3, pf);
sum = s1 + s2 + s3;
aver = sum / 3.0;
printf("第%d个学生的3门成绩平均分数为:%d\n", n, aver);
m++;
break;
}
n++;
fclose(pf);
}
return 0;
}

需要修改的地方,下面注释了一下,下面是我的一个实现,供你参考:



//5位学生,每位学生有3门课的成绩,
//从键盘输入学生学号、姓名、3门课成绩,计算出平均成绩,
//将原有的数据和计算出的平均分数存放在文件studata.txt中;
#include<stdio.h>

int main()
{
    char name[10] = { 0 };
    int s1 = 0, s2 = 0, s3 = 0, n = 1, m = 1, aver = 0, sum = 0, xh = 0;
    FILE* pf = fopen("studata.txt", "w+");
        
    if (pf == NULL)
    {
        perror("fopen");
        return 1;
    }
    
    while (n <= 5)
    {
    
    
        printf("请输入第%d个学生的学号:\n", n);
        scanf("%d",&xh);
        fprintf(pf,"%d ",xh);
        
        printf("请输入第%d个学生的姓名:\n", n);
    //    name[10] = gets(); 获取输入要换个方法 
        scanf("%s",name);
        fprintf(pf,"%s ",name);
        
    //    while (name != '\n')  name是字符串,后面'\n'是换行符,二者不能比较 
//        {
//            //fputc(name, pf);    存入字符串到文件,要用另外的方法 
//            name[10] = getchar();
//        }
        
        
    //    fclose(pf);
//        pf = fopen("studata.txt", "at+");
//        
//        if (pf == NULL)
//        {
//            perror("fopen");
//            return 1;
//        }
        printf("请输入第%d个学生的3门成绩:\n", n);
        scanf("%d %d %d", &s1, &s2, &s3);
        fprintf(pf,"%d %d %d ",s1,s2,s3);
        
        sum=0;
                
        sum = s1 + s2 + s3;
        aver = sum / 3;
        printf("第%d个学生的3门成绩平均分数为:%d\n", n, aver);
        fprintf(pf,"%d\n", aver);
        m++;
            

        
        n++;
    
    
    }
        fclose(pf);
    return 0;
}

看报错原因,如果语法没有错的话,找找缩进和'';''符号少没少
如果用的Dev,有时候可以关掉重新打开,我以前有的时候也会莫名的运行不了但是关掉重开就又可以运行了