从文件内容1 2 3 4 中输出到电脑屏幕,为何出现540155953?

#include<stdio.h>
#include<stdlib.h>
#define N 20
#define sizea sizeof(a)
typedef struct a
{
    int num;
    int n;
    int nu;
    int numnum;
}a;
int read(a *a)
{
    FILE *fp;
    int i=0;
    int n;
    
    if((fp=fopen("D:\\aaa.txt","r"))==NULL)
   {
printf("can not open file.\n");
exit(0);
    }
fread(&a[i],sizea,1,fp);
while(!feof(fp))
     {
    i++;
fread(&a[i],sizea,1,fp);
    }
n=i;
for(i=0;i<n;i++)
{fscanf(fp,"%d %d %d %d",&a[i].num,&a[i].n,&a[i].nu,&a[i].numnum);
printf("%d %d %d %d",a[i].num,a[i].n,a[i].nu,a[i].numnum);
}
fclose(fp);
return n;
}
void write(a *a,int n)
{
    FILE *fpp;
    if((fpp=fopen("D:\\aa.txt","w+"))==NULL)
{
printf("can not open file.\n");
exit(0);
}
fwrite(a,sizea,n,fpp);
fclose(fpp);
}
int main()
{    
    int i=0,n;
    a a[N];
n=read(a);
write(a,n);
getchar();
return 0;
}

原因可能是fread(...)一般使用在二进制...吧