请问为什么红色字体部分是p = head->next->next而不是p = head->next?
#include <stdio.h>#include <string.h>
#include <stdlib.h>
struct StudentInfo
{
char xh[12]; //学号
char xm[12]; //姓名
int sex; //性别0-表示女生1-表示男生
int dycj; //德育成绩
int zycj; //智育成绩
int tycj; //体育成绩
double zhcjpji; //综合测评成绩
struct StudentInfo *next;
};
struct studentInfo
{
char xh[12]; //学号
char xm[12]; //姓名
int sex; //性别0-表示女生1-表示男生
int dycj; //德育成绩
int zycj; //智育成绩
int tycj; //体育成绩
double zhcjpji; //综合测评成绩
};
struct StudentInfo* Read(int n);
int main ()
{
struct StudentInfo *Head;
Head = Read(10);
}
struct StudentInfo* Read(int n)
{
FILE *fp;
int i,num=0;
if ((fp = fopen("in.dat","rb"))==NULL)
{
printf ("cannot open file\n");
}
struct StudentInfo *head;
struct StudentInfo *p,*q;
p = (struct StudentInfo*)malloc(sizeof(struct StudentInfo));
q = (struct StudentInfo*)malloc(sizeof(struct StudentInfo));
head = (struct StudentInfo*)malloc(sizeof(struct StudentInfo));
head->next = p;
while (!feof(fp))
{
fread(q,sizeof(struct studentInfo),1,fp);
p->next = q;
p = q;
q = (struct StudentInfo*)malloc(sizeof(struct StudentInfo));
num++;
}
num = num-1;//学生总数
p = NULL;
p = head->next->next;
for (i=0;i<num;i++)
{
if (p->sex==0)
{
printf ("%12s%12s 女 %9d%9d%9d%6.2f\n",p->xh,p->xm,p->dycj,p->zycj,p->tycj,p->zhcjpji);
}
else
{
printf ("%12s%12s 男 %9d%9d%9d%6.2f\n",p->xh,p->xm,p->dycj,p->zycj,p->tycj,p->zhcjpji);
}
q = p->next;
p = q;
}
printf ("共有学生%d个",num);
return head;
}