C中的文件问题
以下为关于文件操作的部分代码,有几个打???(共5处)的我不明白如何理解,请高手指点啊!!!!
typedef struct node
{
struct student data; /*数据域*/
struct node *next; /*指针域*/
}Node,*Link; //???????????????????????????此处Node Link如何理解???????????????????????????????????
void main()
{
Link l; //??????????????????????????????此外l是什么??????????????????????????
FILE *fp; /*文件指针*/
int select; /*保存选择结果变量*/
char ch; /*保存(y,Y,n,N)*/
int count=0; /*保存文件中的记录条数(或结点个数)*/
Node *p,*r; //???????????????????????????????此处变量如何理解??????????????????????????????????
l=(Node*)malloc(sizeof(Node));
if(!l)
{
printf("\n allocate memory failure "); /*如没有申请到,打印提示信息*/
return ; /*返回主界面*/
}
l->next=NULL;
r=l;
fp=fopen("C:\\student","ab+"); /*以追加方式打开一个二进制文件,可读可写,若此文件不存在,会创建此文件*/
if(fp==NULL)
{
printf("\n=====>can not open file!\n");
exit(0);
}
while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(!p)
{
printf(" memory malloc failure!\n"); /*没有申请成功*/
exit(0); /*退出*/
}
if(fread(p,sizeof(Node),1,fp)==1) /*一次从文件中读取一条学生成绩记录*/
{
p->next=NULL;
r->next=p;
r=p; //此处是r指向p结点吗?我不明白???????????????????????????????????????
count++;
}
}
fclose(fp); /*关闭文件*/
printf("\n=====>open file sucess,the total records number is : %d.\n",count);
menu();
while(1)
{
system("cls");
menu();
p=r; //怎么又赋回去了呢????????????????????????????????????
printf("\n Please Enter your choice(0~9):");
scanf("%d",&select);
if(select==0)
{
if(saveflag==1) /*若对链表的数据有修改且未进行存盘操作,则此标志为1*/
{ getchar();
printf("\n=====>Whether save the modified record to file?(y/n):");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("=====>thank you for useness!");
getchar();
break;
}
[解决办法]
typedef struct node { struct student data; /*数据域*/ struct node *next; /*指针域*/ }Node,*Link; //???????????????????????????此处Node Link如何理解??????????????????????????????????? ---------Link 就是 Node*