请问为什么读取的时候是20行,保存之后又多了几行呢
typedef struct student
{
char number[15];
char name[10];
char sex[10];
char phone[20];
char wechat[10];
char dormitory[20];
char score[5];
}stu;
int loaddata(stu a[],int n)
{
char t[3060];
int cnt=0,i=0;
char name[20],r[3];
FILE *fp;
printf("注意输入000返回菜单\n");
printf("输入回车直接读取stu.txt,或者输入要打开的文件名\n");
fflush(stdin);
while(gets(name)&&strcmp(name,"000")!=0)
{
if(name[0]!='\0')
{
fp=fopen(name,"r+");
if(!fp)
{
printf("找不到文件,打开失败哦!\n");
}
else{break;}
}
else
{
fp=fopen("stu.txt","r+");
if(!fp)
{
printf("找不到文件,打开失败哦!\n");
}
else{break;}
}
printf("输入回车直接读取stu.txt,或者输入要打开的文件名\n");
}
fgets(t,1024,fp);
while(!feof(fp)&&(i<n))
{
if(fscanf(fp,"%s%s%s%s%s%s%s",a[i].number,a[i].name,a[i].sex,a[i].phone,a[i].wechat,a[i].dormitory,a[i].score)!=7)
{
break;
}
cnt++;
i++;
}
if(cnt!=0)
{
printf("录入学生成功\n");
printf("一共录入%d个学生\n",cnt);
}
fclose(fp);
system("pause");
return cnt;
}
int savedata(stu a[],int n)
{
char name[20],r[3];
FILE *fp;
printf("注意输入000返回菜单\n");
printf("输入回车直接读取stu.txt,或者输入要打开的文件名\n");
fflush(stdin);
while(gets(name)&&strcmp(name,"000")!=0)
{
if(name[0]=='\0')
{
fp=fopen("stu.txt","r+");
if(!fp)
{
printf("找不到文件,打开失败哦!\n");
}
else{break;}
}
else
{
fp=fopen(name,"r+");
if(!fp)
{
printf("找不到文件,打开失败哦!\n");
}
else{break;}
}
printf("输入回车直接读取stu.txt,或者输入要打开的文件名\n");
}
int cnt=0;
fprintf(fp,"学号\t\t姓名\t性别\t电话\t\t微信\t宿舍\t 成绩\n");
for(cnt=0;cnt<n;cnt++)
{
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t %s\n",a[cnt].number,a[cnt].name,a[cnt].sex,a[cnt].phone,a[cnt].wechat,a[cnt].dormitory,a[cnt].score);
}
printf("一共保存%d个学生的信息\n",cnt);
fclose(fp);
system("pause");
}
加断点调试下