文件的读取,出现烫烫烫。而且 total vip is 人数也不对。求大神指点。。。(ps.没学过文件)程序还没有完全做完。
程序代码:#include<stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct vip
{
long ID; /*会员编号*/
char name[10]; /*会员姓名*/
long int phone; /*会员电话号码*/
int credits; /*会员积分*/
}VIP;
int menu();/*欢迎界面函数*/
void input();/*会员信息输入函数*/
void Writetofile(VIP vip[],int n);/*往文件中保持数据*/
int inputn(VIP vip[]);/*返回值函数*/
int Readfromfile(VIP vip[]);/*从文件里读取数据*/
void Printvip(VIP vip[],int n);/*输出函数*/
int smallmenu();/*查询会员界面*/
void quit(); /*退出的函数说明*/
int vipIDsearch(VIP vip[],long j);/*按会员编号查找函数*/
int main()
{
VIP vip[1000];
int n,choice,smallchoice,pos;
long j;
choice=menu();
while(1)
{
switch (choice)
{
case 1:/*会员信息输入*/
input(vip);
n=inputn(vip);
Writetofile(vip,n);
break;
case 2:
Readfromfile(vip);
printf("===================================================\n");
printf("编号\t姓名\t电话号码\t积分\n");
Printvip(vip,n);
printf("\n=================================================\n");
break;
case 3:
smallchoice = smallmenu();
while(1)
{
switch (smallchoice)
{
case 1:/*按会员编号查询会员*/
break;
case 2:
break;
case 3:
break;
case 0:
printf("正在退出查询系统....\n正在进入首页界面.....\n\n\n");
choice=menu();
break;
}
smallchoice = smallmenu();
}
break;
case 4:
break;
case 5:
case 0:
quit();
break;
}
choice=menu();
}
}
int menu()/*欢迎界面函数*/
{
int choice;
printf("*****************************************************************\n");
printf(" 欢迎使用会员管理系统\n");
printf("1.会员信息输入\n");
printf("2.查询所有会员信息\n");
printf("3.通过条件查询会员\n");
printf("4.会员信息的修改或删除\n");
printf("5.会员积分达到可领取礼品的统计结果\n");
printf("0.退出系统\n");
printf("****************************************************************\n");
printf("\t请选择菜单号(0---5):");
while( (!(scanf("%d",&choice)))|| (choice<0)||(choice>5))
{
printf("\n\t\t\a\a选择错误!!!!!!!!!!!请重新选择:");
printf("******************************************************************\n");
printf(" 欢迎使用会员管理系统\n");
printf("1.会员信息输入\n");
printf("2.查询所有会员信息\n");
printf("3.通过条件查询会员\n");
printf("4.会员信息的修改或删除\n");
printf("5.会员积分达到可领取礼品的统计结果\n");
printf("0.退出系统\n");
printf("******************************************************************\n");
printf("\t请选择菜单号(0---5):");
}
return choice; /*返回值为choice*/
}
void input(VIP vip[])/*会员信息输入函数*/
{
int i;
i=0;
while(vip[i].ID >=0)
{
i++;
printf("请输入会员编号(输入0结束录入):");
scanf("%ld",&vip[i].ID);
printf("请输入会员姓名:");
scanf("%s",&vip[i].name);
printf("请输入会员电话号码:");
scanf("%ld",&vip[i].phone);
printf("请输入会员积分(新会员为0):");
scanf("%d",&vip[i].credits);
}
}
int inputn(VIP vip[])/*返回值函数*/
{
int i,k;
i=0;
do{
i++;
printf("请输入会员编号(输入0结束录入):");
scanf("%ld",&vip[i].ID);
if(vip[i].ID==0)
break;
printf("请输入会员姓名:");
scanf("%s",&vip[i].name);
printf("请输入会员电话号码:");
scanf("%ld",&vip[i].phone);
printf("请输入会员积分(新会员为0):");
scanf("%d",&vip[i].credits);
}while(1);
k=i;
return k;
}
void Writetofile(VIP vip[],int n)/*往文件中保持数据*/
{
FILE *fp;
if((fp=fopen("vip.txt","w"))==NULL)
{
printf("Failure to open vip.txt!\n");
exit(0);
}
fwrite(vip,sizeof(VIP),n,fp);
fclose(fp);
}
int Readfromfile(VIP vip[])/*从文件里读取数据*/
{
FILE*fp;
int i;
if((fp=fopen("vip.txt","r"))==NULL)/*以读方式打开文本文件*/
{
printf("打开文件失败!!");
exit(0);
}
for(i=0;!feof(fp);i++)
{
fread(&vip[i],sizeof(VIP),1,fp);/*按数据块读文件*/
}
fclose(fp);
printf("Total vip is %d.\n",i-1);
return i-1;
}
void Printvip(VIP vip[],int n)/*输出函数*/
{
int i;
for(i=0;i<n;i++)
{
printf("\t%ld\t%s\t%ld\t%d",vip[i].ID,vip[i].name,vip[i].phone,vip[i].credits);
}
}
int smallmenu()/*查询会员界面*/
{
int choice;
printf("*****************************************************************\n");
printf(" 请选择条件区域\n");
printf("1.会员编号\n");
printf("2.会员姓名\n");
printf("3.电话号码\n");
printf("0.退出查询系统\n");
printf("****************************************************************\n");
printf("\t请选择菜单号(0---3):");
while( (!(scanf("%d",&choice)))|| (choice<0)||(choice>3))
{
printf("\n\t\t\a\a选择错误!!!!!!!!!!!请重新选择:");
printf("*****************************************************************\n");
printf(" 请选择条件区域\n");
printf("1.会员编号\n");
printf("2.会员姓名\n");
printf("3.电话号码\n");
printf("0.退出查询系统\n");
printf("****************************************************************\n");
printf("\t请选择菜单号(0---3):");
}
return choice; /*返回值为choice*/
}
void quit() /*退出的函数说明*/
{
printf("\n\t感谢使用商城会员管理系统,正在退出....\n");
exit(0);
}








