c语言用fread读取文件中的数据时没有在输出时没有结果是怎么回事?

语言用fread读取文件中的数据到结构体中在输出时没有结果是怎么回事?

struct student
{
    char no[10];
    char name[10];
    char dz[15];
    int tel;
};
int main{
struct student s[30];
  FILE *fp;
    int n,i=0;
    fp=fopen("b.txt","r");
    if(fp==NULL)
    {
        printf("打开文件失败");
        return;
    }
    while(!feof(fp))
    {
        int size = fread(&s,sizeof(struct student),1,fp);
        if(size!= 0)
        {
            n++;    
        }
        for(i=0;i<n;i++)
        {
            printf("%s%s%s%d",s[i].no,s[i].name,s[i].dz,s[i].tel);
        }
    }
return 0;
}

s没看到定义?
而且它是个结构体 你这样fread(&s,sizeof(struct student),1,fp);不对

修改如下,供参考:

#include <stdio.h>
struct student
{
    char no[10];
    char name[10];
    char dz[15];
    int  tel;
};
int main
{
    struct student s[30];
    FILE *fp;
    int n,i=0;
    fp=fopen("b.txt","r");
    if(fp==NULL)
    {
        printf("打开文件失败.\n");
        return 1; //return;   修改
    }
    while(i < 30)     //while(!feof(fp)) 修改
    {
        int size = fread(&s[i],sizeof(struct student),1,fp);//修改
        if(size != 1)                              //修改
             break;
        i++;   //n++;                              //修改
    }
    for(n=i,i=0;i<n;i++)  //修改
    {
        printf("%s %s %s %d\n",s[i].no,s[i].name,s[i].dz,s[i].tel); //修改
    }
    //}  修改
    return 0;
}