C语言写入数据打开txt格式文件后,txt格式文件内容是乱码的,应该在哪里进行修改。

#include<stdio.h>
#include<stdlib.h>
struct STU{
    int num;
    char name[10];   
    int score1;
    int score2;
    int score3;
};
void scan(struct STU *p)
{  int i;
   printf("请依次输入学生的学号姓名以及三门课的成绩\n");
   for(i=0;i<4;i++)
    {printf("第%d位:",i+1);
    scanf("%d%s%d%d%d",&p[i].num,p[i].name,&p[i].score1,&p[i].score2,&p[i].score3);}
}
void fun(struct STU *p)
{
    float x,avar[4];
    int j,i;
     struct STU t;
    for(i=0;i<4;i++)
    avar[i]=((float)p[i].score1+(float)p[i].score2+(float)p[i].score3)/3;
    for(i=0;i<3;i++)
    for(j=0;j<3-i;j++)
    if(avar[j]<avar[j+1])
    {  t=p[j];p[j]=p[j+1];p[j+1]=t;
       x=avar[j];avar[j]=avar[j+1];avar[j+1]=x;
    }
    printf("功能运行后\n");
    for(i=0;i<4;i++)
    printf("学号为:%d 姓名为:%s 成绩一:%d 成绩二:%d 成绩三:%d 平均分:%f\n",p[i].num,p[i].name,p[i].score1,p[i].score2,p[i].score3,avar[i]);
}
    void main()
{   
    FILE *fp;
     STU a[4],b[4];
    scan(a);
    fun(a);
    fp=fopen("result.txt","wb");
    if(fp==NULL)
    { printf("cannot open this file");
           exit(0);    
    }
    int i;
    for(i=0;i<4;i++)
    {  
    fwrite(&a[i],sizeof(struct STU),1,fp);}
    for(i=0;i<4;i++)
    fread(&b[i],sizeof(struct STU),1,fp);
    for(i=0;i<4;i++)
    printf("学号为:%d 姓名为:%s 成绩一:%d 成绩二:%d 成绩三:%d \n",b[i].num,b[i].name,b[i].score1,b[i].score2,b[i].score3);
    fclose(fp);
    }

在 result.txt文件里 除了姓名 其余的数字全是一些乱码和“烫烫” 以及"屯屯" 

求求大神吗  能告诉萌新小白这是为什么吗

fopen用的wb参数表示以二进制形式写入,你要写文本那就用w