文件的读取,出现烫烫烫。而且 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); }