通讯录的问题,关照菜鸟,给点耐心哦 ,这是我自己写的一个简单的通讯录,调试运行我看不出有啥问题
#include<stdio.h>#include<stdlib.h>
#include<string.h>
#define N 4;
//建立日期函数
struct date_type
{
unsigned short year;
unsigned short month;
unsigned short day;
};
//建立函数结构体存储信息
struct person_type
{
int num; //序号
char name[10];
int mobilenum; //手机号码
int homenum; //家庭电话
char email;
char address[30]; //通讯地址
struct date_type birthday;
};
typedef struct person_type Person;
//编写建立信息文件函数,从键盘输入N个人的信息,并转存到文件中
int mkfile(char*filename,Person per[],int N)
{
FILE*fp;
int i,flag=1;
if((fp=fopen(filename,"wb"))==NULL)
{
printf("can not open this file\n");
exit(0);
}
printf("请输入%d个人的序号,姓名,手机号码,家庭电话,电子邮箱,通讯地址,出生日期:\n",N);
for(i=0;i<N;i++)
{
scanf("%d%s%d%d%s%s%d",&per[i].num ,&per[i].name ,&per[i].mobilenum,&per[i].homenum,&per[i].email,&per[i].address,&per[i].birthday);
if(fwrite(&per[i],sizeof(per),1,fp)!=1)
{
flag=0;
break;
}
}
fclose(fp);
return flag;
}
//显示函数
int show(char*filename,Person per[],int N)
{
FILE*fp;
int i,flag=1;
if((fp=fopen(filename,"rb"))==NULL)
{
printf("cannot open this file\n");
exit(0);
}
for(i=0;i<N;i++)
if(fread(&per[i],sizeof(per),1,fp)!=1)
{ flag=0;
break;
}
else
printf("%d%s%d%d%s%s%d",&per[i].num ,&per[i].name ,&per[i].mobilenum,&per[i].homenum,&per[i].email,&per[i].address,&per[i].birthday);
fclose(fp);
return flag;
}
//建立查找函数
int seekInfo(char*filename,Person per[],int n)
{
FILE*fp;
int i;flag=1;
printf("please input seekname %s",seekname);
scanf("%s",&seekname);
for(i=0;i<N;i++)
if(seekname==per[i].name) //实现查找功能的关键代码
printf("%d%s%d%d%s%s%d",&per[i].num ,&per[i].name ,&per[i].mobilenum,&per[i].homenum,&per[i].email,&per[i].address,&per[i].birthday);
else
flag=0;
fclose(fp);
return flag;
}
//建立添加信息的函数
void addInfo(char*filename, int N)
{
FILE*fp;
char str[];
if((fp=fopen("filename","a"))==NULL)
{
printf("cannot open this file\n");
exit(0);
}
else
printf("请输入需添加的信息:%s",str);
gets(str);
fputs(str,fp);
fclose(fp);
if((fp=fopen("filename","r"))==NULL)
{
printf("cannot open this file\n");
exit(0);
}
fgets(str,N,fp);
puts(str);
fclose(fp);
return 0;
}
//建立删除函数
void deletInfo(char*filename,int N)
{
FILE*fp;
int i;
int count=N;
printf("请输入需要删除信息的人名:%s",deletname);
scanf("%s",&deletname);
for(i=0;i<N;i++)
{ if(deletname==per[i].name)
per[i]=per[i+1]; //以向前赋值的方法实现个人信息的向前移动,进而删除了第i 个人的信息
}
count-=1; //通讯录删除某个信息后的人数
printf("删除信息后的通讯录:");
for(i=0;i<count;i++)
pintf("%d%s%d%d%s%s%d",&per[i].num ,&per[i].name ,&per[i].mobilenum,&per[i].homenum,&per[i].email,&per[i].address,&per[i].birthday);
printf("\n");
}
//主函数
int main()
{
int k=0;
while(1)
{
printf("\n");
printf("这是一个通讯录\n");
printf("\n");
printf("1----创建通讯录\n");
printf("2----查找通讯录信息\n");
printf("3----添加通讯录信息\n");
printf("4----删除通讯录信息\n");
printf("0----退出\n");
printf("请选择:");
scanf("%d",&k);
switch(k)
{
case 0: exit(0);
case 1: mkFile();
continue;
case 2:seekInfo();
continue;
case 3:addInfo();
continue;
case 4:deletInfo();
continue;
}
return 0;
}
} 不知道错在哪里啊,帮忙找找,指点指点
[ 本帖最后由 cyuyan793445 于 2013-2-25 15:19 编辑 ]