为什么再次输入数据后,输出时会多一个空数据。
#include<stdio.h>
#include<stdlib.h>
void tj();
void yl();
void menu();
struct number
{
char no[20];
char name[20];
char address[20];
char phone[20];
}s[100];
int main()
{
int i;
menu();
scanf("%d",&i);
getchar();
switch(i)
{
case 1:tj();break;
case 2:yl();break;
}
}
void tj()
{
int i=0,m;
FILE *fp;
char ch;
fp=fopen("C:/Users/陈/Desktop/student.dat.txt","r");
ch=fgetc(fp);
if(ch==NULL)
{
printf("打开失败");
}
else
{
fclose(fp);
printf("输入Y继续输入,输入N退出\n");
scanf("%c",&ch);
getchar();
while(ch=='Y')
{
printf("学号");
gets(s[i].no);
printf("姓名");
gets(s[i].name);
printf("地址");
gets(s[i].address);
printf("电话号码");
gets(s[i].phone);
i++;
printf("输入Y继续输入,输入N退出\n");
scanf("%c",&ch);
getchar();
}
fp=fopen("C:/Users/陈/Desktop/student.dat.txt","a");
ch=fgetc(fp);
if(ch==NULL)
{
printf("打开失败");
}
else
{
for(m=0;m<=i;m++)
{
fwrite(&s[m],sizeof(s),1,fp);
}
fclose(fp);
}
}
}
void yl()
{
FILE *fp;
char ch;
int i=0,m;
fp=fopen("C:/Users/陈/Desktop/student.dat.txt","r");
ch=fgetc(fp);
if(ch==NULL)
{
printf("未找到学生信息");
}
else
{
fseek(fp,0,SEEK_SET);
while(!feof(fp))
{
ch=fgetc(fp);
if(feof(fp))
{
break;
}
fseek(fp,-1,1);
fread(&s[i],sizeof(s),1,fp);
i++;
}
fclose(fp);
for(m=0;m<i-1;m++)
{
printf("学号%s\n",s[m].no);
printf("姓名%s\n",s[m].name);
printf("地址%s\n",s[m].address);
printf("电话号码%s\n",s[m].phone);
}
}
}
void menu()
{
printf("1.添加学生信息\n");
printf("2.浏览学生信息\n");
}