在下列情况下如何利用fseek()、ftell()函数判断文软件191.txt中存储的的学生数?

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

struct student{

   char name[10];

   char num[11];

   char sex[3];

   int grade[6];

   int total;

}s[50];

char claname[15];

int main()

{

   FILE *fp;

   int n,i,j;

   char ch;

   printf("请输入班级名称:");

   scanf("%s",claname);

   strcat(claname, ".txt");       //为班级软件191创建一个txt文件

   fp=fopen(claname,"w+");

   if (fp == NULL)

   {

      printf("File open error!\n");

      exit(0);

   }

   printf("请输入学生数 \n");

   scanf("%d",&n);

   printf("请按以下格式并使用空格输入学生信息:\n姓  名 学      号 性别 大英 高数 C程 导论 体育 近代史\n");

   for(i=0;i<n;i++)

  {

     scanf("%s",s[i].name);

     scanf("%s",s[i].num);

     scanf("%s",s[i].sex);

     scanf("%d",&s[i].grade[0]);

     scanf("%d",&s[i].grade[1]);

     scanf("%d",&s[i].grade[2]);

     scanf("%d",&s[i].grade[3]);

     scanf("%d",&s[i].grade[4]);

     scanf("%d",&s[i].grade[5]);

     fwrite(&s[i],sizeof(struct student),1,fp);  //将学生信息从内存变量写入文件

     fputc('\n',fp);                                 //用换行符分割学生信息,每个学生信息占一行

  }

  fclose(fp);

  fp=fopen("软件191.txt","r");

  if (fp == NULL)

  {

     printf("File open error!\n");

     exit(0);

  }

  printf("学      号 姓  名 性别 总成绩  \n");

  for (i=0;i<n;i++)                                          //从软件191.txt文件中读学生信息

  {

     fread(&s[i],sizeof(struct student),1,fp);

     ch=fgetc(fp);

     s[i].total=0;

     for(j=0;j<6;j++)

s[i].total+=s[i].grade[j];

    printf("%s %s %s  %d\n", s[i].num, s[i].name, s[i].sex,s[i].total);

  } 

  fclose(fp); 

  return 0;

}

fseek到末尾,ftell获取文件大小,大小除以结构体的大小sizeof(struct student)就得到数量。

fseek(fp,0,SEEK_END);int size = ftell(fp); int num = size / sizeof(struct student);