cmaedu.com#includestdio.h
int main()
cmaedu.com int a[10];
cmaedu.com char q;
cmaedu.com int i,m=0,n=0,p=0;
cmaedu.com long long b[10],c[10],d[10],s[10];
cmaedu.com for(i=0;i10;i++)
b[i]=0;
cmaedu.com c[i]=0;
d[i]=0;
cmaedu.com for(i=0;i10;i++)
scanf("%d%lld",a[i],s[i]);
cmaedu.com for(i=9;i=0;i--)
if(a[i]==0)
b[m++]=s[i];
if(a[i]==1)
c[n++]=s[i];
cmaedu.com if(a[i]==2)
cmaedu.com d[p++]=s[i];
cmaedu.com for(i=0;i10;i++)
cmaedu.com printf("%lld %lld %lld\n",b[i],c[i],d[i]);
return 0;
cmaedu.com声明: 非原创
cmaedu.com#include "stdio.h" /*标准输入输出函数库*/
cmaedu.com#include "stdlib.h" /*标准函数库*/
#include "string.h" /*字符串函数库*/
cmaedu.com#include "conio.h" /*屏幕操作函数库*/
cmaedu.com#define HEADER1 " ---------------------------TELEPHONE BOOK---------------------------\n"
cmaedu.com#define HEADER2 " | num | name | phonenumber | address | \n"
#define HEADER3 " |--------------|------------|-----------------|---------------------| \n"
cmaedu.com#define FORMAT " | %-10s| %-10s| %-15s |%-20s | \n"
cmaedu.com#define DATA p-num,p-name,p-phonenum,p-address
#define END " ---------------------------------------------------------------------\n"
cmaedu.com#define N 100
int saveflag=0; /*是否需要存盘的标志变量*/
cmaedu.com/*定义与电话簿有关的数据结构*/
cmaedu.comtypedef struct telebook /*标记为telebook*/
char num[4]; /*编号*/
cmaedu.comchar name[10]; /*姓名*/
cmaedu.comchar phonenum[15]; /*电话号码*/
char address[20]; /*地址*/
cmaedu.com}TELEBOOK;
void menu() /*主菜单*/
system("cls"); /*调用DOS命令,清屏.与clrscr()功能相同*/
cmaedu.comtextcolor(13); /*在文本模式中选择新的字符颜色*/
cmaedu.comgotoxy(10,5); /*在文本窗口中设置光标*/
cprintf(" The telephone-book Management System \n");
gotoxy(10,8);
cprintf(" *************************Menu********************************\n");
cmaedu.comgotoxy(10,9);
cmaedu.comcprintf(" * 1 input record 2 display record *\n");
gotoxy(10,10);
cmaedu.comcprintf(" * 3 delete record 4 search record *\n");
gotoxy(10,11);
cprintf(" * 5 modify record 6 insert record *\n");
gotoxy(10,12);
cmaedu.comcprintf(" * 7 sort record 8 save record *\n");
cmaedu.comgotoxy(10,13);
cmaedu.comcprintf(" * 0 quit system *\n");
cmaedu.comgotoxy(10,14);
cprintf(" *************************************************************\n");
cmaedu.com/*cprintf()送格式化输出至文本窗口屏幕中*/
/*格式化输出表头*/
void printheader()
cmaedu.com printf(HEADER1);
printf(HEADER2);
cmaedu.com printf(HEADER3);
/*格式化输出表中数据*/
cmaedu.comvoid printdata(TELEBOOK pp)
cmaedu.com TELEBOOK* p;
p=pp;
cmaedu.com printf(FORMAT,DATA);
/*显示数组temp[]中存储的电话簿记录,内容为telebook结构中定义的内容*/
cmaedu.comvoid Disp(TELEBOOK temp[],int n)
cmaedu.comint i;
if(n==0) /*表示没有电话簿记录*/
cmaedu.com printf("\n=====Not telephone record!\n");
cmaedu.com getchar();
cmaedu.com return;
cmaedu.comprintf("\n\n");
cmaedu.comprintheader(); /*输出表格头部*/
i=0;
while(in) /*逐条输出数组中存储的电话簿记录*/
printdata(temp[i]);
cmaedu.com i++;
printf(HEADER3);
getchar();
void Wrong() /*输出按键错误信息*/
printf("\n\n\n\n\n***********Error:input has wrong! press any key to continue**********\n");
cmaedu.comgetchar();
void Nofind() /*输出未查找此记录的信息*/
cmaedu.comprintf("\n=====Not find this telephone record!\n");
cmaedu.com作用:用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值
参数:findmess[]保存要查找的具体内容; nameorphonenum[]保存按什么在数组中查找;
int Locate(TELEBOOK temp[],int n,char findmess[],char nameorphonenum[])
int i=0;
cmaedu.comif(strcmp(nameorphonenum,"phonenum")==0) /*按电话号码查询*/
cmaedu.com while(in)
cmaedu.com if(strcmp(temp[i].phonenum,findmess)==0) /*若找到findmess值的电话号码*/
cmaedu.com return i;
cmaedu.com i++;
else if(strcmp(nameorphonenum,"name")==0) /*按姓名查询*/
cmaedu.com while(in)
cmaedu.com if(strcmp(temp[i].name,findmess)==0) /*若找到findmess值的姓名*/
cmaedu.com return i;
i++;
cmaedu.comreturn -1; /*若未找到,返回一个整数-1*/
/*输入字符串,并进行长度验证(长度lens)*/
void stringinput(char *t,int lens,char *notice)
char n[255];
do{
cmaedu.com printf(notice); /*显示提示信息*/
scanf("%s",n); /*输入字符串*/
cmaedu.com if(strlen(n)lens) printf("\n exceed the required length! \n");
/*进行长度校验,超过lens值重新输入*/
cmaedu.com }while(strlen(n)lens);
strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/
/*增加电话簿记录*/
cmaedu.comint Add(TELEBOOK temp[],int n)
cmaedu.com char ch,num[10];
int i,flag=0;
cmaedu.com system("cls");
cmaedu.com Disp(temp,n); /*先打印出已有的电话簿信息*/
cmaedu.com while(1) /*一次可输入多条记录,直至输入编号为0的记录才结束添加操作*/
cmaedu.com while(1) /*输入记录编号,保证该编号没有被使用,若输入编号为0,则退出添加记录操作*/
stringinput(num,10,"input number(press '0'return menu):"); /*格式化输入编号并检验*/
cmaedu.com flag=0;
if(strcmp(num,"0")==0) /*输入为0,则退出添加操作,返回主界面*/
cmaedu.com {return n;}
i=0;
while(in) /*查询该编号是否已经存在,若存在则要求重新输入一个未被占用的编号*/
if(strcmp(temp[i].num,num)==0)
flag=1;
cmaedu.com break;
i++;
cmaedu.com if(flag==1) /*提示用户是否重新输入*/
cmaedu.com { getchar();
cmaedu.com printf("==The number %s is existing,try again?(y/n):",num);
cmaedu.com scanf("%c",ch);
if(ch=='y'||ch=='Y')
continue;
cmaedu.com else
cmaedu.com return n;
cmaedu.com else
cmaedu.com {break;}
cmaedu.com strcpy(temp[n].num,num); /*将字符串num拷贝到temp[n].num中*/
stringinput(temp[n].name,15,"Name:");
cmaedu.com stringinput(temp[n].phonenum,15,"Telephone:");
stringinput(temp[n].address,15,"Adress:");
cmaedu.com saveflag=1;
cmaedu.com n++;
return n;
/*按编号或姓名,查询电话簿记录*/
cmaedu.comvoid Qur(TELEBOOK temp[],int n)
int select; /*1:按姓名查,2:按电话号码查,其他:返回主界面(菜单)*/
cmaedu.comchar searchinput[20]; /*保存用户输入的查询内容*/
cmaedu.comint p=0;
cmaedu.comif(n=0) /*若数组为空*/
cmaedu.com system("cls");
cmaedu.com printf("\n=====No telephone record!\n");
cmaedu.com getchar();
return;
system("cls");
cmaedu.comprintf("\n =====1 Search by name =====2 Search by telephone number\n");
cmaedu.comprintf(" please choice[1,2]:");
cmaedu.comscanf("%d",select);
if(select==1) /*按姓名查询*/
cmaedu.com stringinput(searchinput,10,"input the existing name:");
p=Locate(temp,n,searchinput,"name");
cmaedu.com /*在数组temp中查找编号为searchinput值的元素,并返回该数组元素的下标值*/
if(p!=-1) /*若找到该记录*/
printheader();
printdata(temp[p]);
cmaedu.com printf(END);
printf("press any key to return");
cmaedu.com getchar();
cmaedu.com else
Nofind();
cmaedu.com getchar();
else if(select==2) /*按电话号码查询*/
cmaedu.com stringinput(searchinput,15,"input the existing telephone number:");
cmaedu.com p=Locate(temp,n,searchinput,"phonenum");
cmaedu.com if(p!=-1)
printheader();
cmaedu.com printdata(temp[p]);
cmaedu.com printf(END);
printf("press any key to return");
cmaedu.com getchar();
cmaedu.com else
Nofind();
cmaedu.com getchar();
cmaedu.comelse
cmaedu.com Wrong();
getchar();
/*删除电话簿记录:先找到保存该记录的数组元素的下标值,然后在数组中删除该数组元素*/
cmaedu.comint Del(TELEBOOK temp[],int n)
int sel;
cmaedu.comchar findmess[20];
int p=0,i=0;
cmaedu.comif(n=0)
{ system("cls");
printf("\n=====No telephone record!\n");
cmaedu.com getchar();
cmaedu.com return n;
cmaedu.comsystem("cls");
cmaedu.comDisp(temp,n);
cmaedu.comprintf("\n =====1 Delete by name =====2 Delete by telephone number\n");
cmaedu.comprintf(" please choice[1,2]:");
scanf("%d",sel);
if(sel==1)
cmaedu.com stringinput(findmess,10,"input the existing name:");
p=Locate(temp,n,findmess,"name");
cmaedu.com getchar();
if(p!=-1)
cmaedu.com for(i=p+1;in;i++) /*删除此记录,后面记录向前移*/
cmaedu.com strcpy(temp[i-1].num,temp[i].num);
cmaedu.com strcpy(temp[i-1].name,temp[i].name);
cmaedu.com strcpy(temp[i-1].phonenum,temp[i].phonenum);
strcpy(temp[i-1].address,temp[i].address);
printf("\n==delete success!\n");
cmaedu.com n--;
getchar();
saveflag=1;
cmaedu.com else
Nofind();
cmaedu.com getchar();
cmaedu.comelse if(sel==2) /*先按电话号码查询到该记录所在的数组元素的下标值*/
cmaedu.com stringinput(findmess,15,"input the existing telephone number:");
cmaedu.com p=Locate(temp,n,findmess,"phonenum");
getchar();
if(p!=-1)
for(i=p+1;in;i++) /*删除此记录,后面记录向前移*/
cmaedu.com strcpy(temp[i-1].num,temp[i].num);
strcpy(temp[i-1].name,temp[i].name);
cmaedu.com strcpy(temp[i-1].phonenum,temp[i].phonenum);
cmaedu.com strcpy(temp[i-1].address,temp[i].address);
printf("\n=====delete success!\n");
cmaedu.com n--;
cmaedu.com getchar();
cmaedu.com saveflag=1;
else
cmaedu.com Nofind();
getchar();
return n;
cmaedu.com/*修改电话簿记录。先按输入的联系人姓名查询到该记录,
然后提示用户修改该记录编号之外的值,编号不能修改*/
cmaedu.comvoid Modify(TELEBOOK temp[],int n)
char findmess[20];
int p=0;
cmaedu.comif(n=0)
{ system("cls");
printf("\n=====No telephone number record!\n");
getchar();
return ;
cmaedu.comsystem("cls");
printf("modify telephone book recorder");
Disp(temp,n);
stringinput(findmess,10,"input the existing name:"); /*输入并检验该姓名*/
p=Locate(temp,n,findmess,"name"); /*查询到该数组元素,并返回下标值*/
if(p!=-1) /*若p!=-1,表明已经找到该数组元素*/
cmaedu.com printf("Number:%s,\n",temp[p].num);
printf("Name:%s,",temp[p].name);
cmaedu.com stringinput(temp[p].name,15,"input new name:");
printf("Name:%s,",temp[p].phonenum);
stringinput(temp[p].phonenum,15,"input new telephone:");
cmaedu.com printf("Name:%s,",temp[p].address);
stringinput(temp[p].address,30,"input new address:");
printf("\n=====modify success!\n");
cmaedu.com getchar();
cmaedu.com Disp(temp,n);
cmaedu.com getchar();
cmaedu.com saveflag=1;
cmaedu.comelse
cmaedu.com {Nofind();
cmaedu.com getchar();
return ;
cmaedu.com/*插入记录:按编号查询到要插入的数组元素的位置,然后在该记录编号之后插入一个新数组元素。*/
int Insert(TELEBOOK temp[],int n)
char ch,num[10],s[10]; /*s[]保存插入点位置之前的记录编号,num[]保存输入的新记录的编号*/
cmaedu.com TELEBOOK newinfo;
cmaedu.com int flag=0,i=0,kkk=0;
cmaedu.com system("cls");
Disp(temp,n);
cmaedu.com while(1)
cmaedu.com { stringinput(s,10,"please input insert location after the Number:");
flag=0;i=0;
cmaedu.com while(in) /*查询该编号是否存在,flag=1表示该编号存在*/
cmaedu.com if(strcmp(temp[i].num,s)==0) {kkk=i;flag=1;break;}
cmaedu.com i++;
if(flag==1)
break; /*若编号存在,则进行插入之前的新记录输入操作*/
cmaedu.com else
cmaedu.com { getchar();
printf("\n=====The number %s is not existing,try again?(y/n):",s);
cmaedu.com scanf("%c",ch);
if(ch=='y'||ch=='Y')
cmaedu.com {continue;}
cmaedu.com else
cmaedu.com {return n;}
cmaedu.com /*以下新记录的输入操作与Add()相同*/
cmaedu.com while(1)
{ stringinput(num,10,"input new Number:");
i=0;flag=0;
cmaedu.com while(in) /*查询该编号是否存在,flag=1表示该编号存在*/
cmaedu.com if(strcmp(temp[i].num,num)==0) {flag=1;break;}
i++;
if(flag==1)
cmaedu.com getchar();
cmaedu.com printf("\n=====Sorry,The number %s is existing,try again?(y/n):",num);
scanf("%c",ch);
if(ch=='y'||ch=='Y')
cmaedu.com {continue;}
cmaedu.com else
cmaedu.com {return n;}
cmaedu.com else
break;
cmaedu.com strcpy(newinfo.num,num); /*将字符串num拷贝到newinfo.num中*/
stringinput(newinfo.name,15,"Name:");
stringinput(newinfo.phonenum,15,"Telephone:");
stringinput(newinfo.address,15,"Adress:");
cmaedu.com saveflag=1; /*在main()有对该全局变量的判断,若为1,则进行存盘操作*/
for(i=n-1;ikkk;i--) /*从最后一个组织元素开始往向移一个元素位置*/
strcpy(temp[i+1].num,temp[i].num);
cmaedu.com strcpy(temp[i+1].name,temp[i].name);
strcpy(temp[i+1].phonenum,temp[i].phonenum);
strcpy(temp[i+1].address,temp[i].address);
strcpy(temp[kkk+1].num,newinfo.num); /*在kkk的元素位置后插入新记录*/
strcpy(temp[kkk+1].name,newinfo.name);
cmaedu.com strcpy(temp[kkk+1].phonenum,newinfo.phonenum);
cmaedu.com strcpy(temp[kkk+1].address,newinfo.address);
cmaedu.com n++;
cmaedu.com Disp(temp,n);
cmaedu.com printf("\n\n");
getchar();
cmaedu.com return n;
cmaedu.com/*利用选择排序法实现数组的按记录编号或姓名的升序排序*/
cmaedu.comvoid SelectSort(TELEBOOK temp[],int n)
int i=0,j=0,flag=0,indexmin,select;
char charflag[10];
cmaedu.comTELEBOOK newinfo;
cmaedu.comif(n=0)
{ system("cls");
printf("\n=====Not telephone record!\n");
getchar();
cmaedu.com return ;
cmaedu.comsystem("cls");
cmaedu.comDisp(temp,n); /*显示排序前的所有记录*/
cmaedu.comprintf(" ==1 SORT BY NUMBER ==2 SORT BY NAME\n");
printf(" please choice[1,2]:");
cmaedu.comscanf("%d",select);
cmaedu.comif(select==1) /*按记录编号排序*/
for(i=0;in-1;i++)
cmaedu.com flag=32767;indexmin=0;
for(j=i;jn;j++)
cmaedu.com { if(atoi(temp[j].num)flag)
{ flag=atoi(temp[j].num);
cmaedu.com indexmin=j;
cmaedu.com strcpy(newinfo.num,temp[i].num); /*利用结构变量newinfo实现数组元素的交换*/
strcpy(newinfo.name,temp[i].name);
strcpy(newinfo.phonenum,temp[i].phonenum);
cmaedu.com strcpy(newinfo.address,temp[i].address);
cmaedu.com strcpy(temp[i].num,temp[indexmin].num);
cmaedu.com strcpy(temp[i].name,temp[indexmin].name);
cmaedu.com strcpy(temp[i].phonenum,temp[indexmin].phonenum);
strcpy(temp[i].address,temp[indexmin].address);
cmaedu.com strcpy(temp[indexmin].num,newinfo.num);
cmaedu.com strcpy(temp[indexmin].name,newinfo.name);
cmaedu.com strcpy(temp[indexmin].phonenum,newinfo.phonenum);
strcpy(temp[indexmin].address,newinfo.address);
cmaedu.com Disp(temp,n); /*显示排序后的所有记录*/
cmaedu.com saveflag=1;
printf("\n =====sort complete!\n");
getchar();
cmaedu.com return;
else if(select==2)
for(i=0;in-1;i++)
charflag[0]=255;indexmin=0;
for(j=i;jn;j++)
cmaedu.com { if(strcmp(temp[j].name,charflag)0)
cmaedu.com { charflag[0]=temp[j].name;
indexmin=j;
strcpy(newinfo.num,temp[i].num); /*利用结构变量newinfo实现数组元素的交换*/
cmaedu.com strcpy(newinfo.name,temp[i].name);
strcpy(newinfo.phonenum,temp[i].phonenum);
cmaedu.com strcpy(newinfo.address,temp[i].address);
cmaedu.com strcpy(temp[i].num,temp[indexmin].num);
strcpy(temp[i].name,temp[indexmin].name);
strcpy(temp[i].phonenum,temp[indexmin].phonenum);
cmaedu.com strcpy(temp[i].address,temp[indexmin].address);
cmaedu.com strcpy(temp[indexmin].num,newinfo.num);
cmaedu.com strcpy(temp[indexmin].name,newinfo.name);
cmaedu.com strcpy(temp[indexmin].phonenum,newinfo.phonenum);
cmaedu.com strcpy(temp[indexmin].address,newinfo.address);
Disp(temp,n); /*显示排序后的所有记录*/
cmaedu.com saveflag=1;
printf("\n =====sort complete!\n");
cmaedu.com getchar();
return;
cmaedu.com else
cmaedu.com {Wrong();
cmaedu.com getchar();
cmaedu.com getchar();
return;}
cmaedu.com/*数据存盘,若用户没有专门进行此操作且对数据有修改,在退出系统时, 会提示用户存盘*/
void Save(TELEBOOK temp[],int n)
FILE* fp;
int i=0;
cmaedu.comfp=fopen("c:\\telephon","w");/*以只写方式打开文本文件*/
cmaedu.comif(fp==NULL) /*打开文件失败*/
cmaedu.com printf("\n=====open file error!\n");
cmaedu.com getchar();
return ;
cmaedu.comfor(i=0;in;i++)
if(fwrite(temp[i],sizeof(TELEBOOK),1,fp)==1)/*每次写一条记录或一个结构数组元素至文件*/
cmaedu.com continue;
else
cmaedu.com break;
cmaedu.comif(i0)
getchar();
cmaedu.com printf("\n\n=====save file complete,total saved's record number is:%d\n",i);
cmaedu.com getchar();
cmaedu.com saveflag=0;
else
cmaedu.com{system("cls");
printf("the current link is empty,no telephone record is saved!\n");
getchar();
fclose(fp); /*关闭此文件*/
void main()
cmaedu.com TELEBOOK tele[N]; /*定义TELEBOOK结构体*/
cmaedu.com FILE *fp; /*文件指针*/
int select; /*保存选择结果变量*/
cmaedu.com char ch; /*保存(y,Y,n,N)*/
int count=0; /*保存文件中的记录条数(或元素个数)*/
cmaedu.com fp=fopen("C:\\telephon","a+");
/*以追加方式打开文本文件c:\telephon,可读可写,若此文件不存在,会创建此文件*/
if(fp==NULL)
printf("\n=====can not open file!\n");
cmaedu.com exit(0);
while(!feof(fp))
cmaedu.com if(fread(tele[count],sizeof(TELEBOOK),1,fp)==1) /*一次从文件中读取一条电话簿记录*/
cmaedu.com count++;
cmaedu.comfclose(fp); /*关闭文件*/
cmaedu.comprintf("\n==open file sucess,the total records number is : %d.\n",count);
cmaedu.comgetchar();
menu();
while(1)
cmaedu.com system("cls");
menu();
printf("\n Please Enter your choice(0~8):"); /*显示提示信息*/
scanf("%d",select);
if(select==0)
cmaedu.com if(saveflag==1) /*若对数组的数据有修改且未进行存盘操作,则此标志为1*/
cmaedu.com { getchar();
cmaedu.com printf("\n==Whether save the modified record to file?(y/n):");
cmaedu.com scanf("%c",ch);
if(ch=='y'||ch=='Y')
cmaedu.com Save(tele,count);
printf("\n===thank you for useness!");
getchar();
break;
switch(select)
cmaedu.com case 1:count=Add(tele,count);break; /*增加电话簿记录*/
cmaedu.com case 2:system("cls");Disp(tele,count);break; /*显示电话簿记录*/
cmaedu.com case 3:count=Del(tele,count);break; /*删除电话簿记录*/
case 4:Qur(tele,count);break; /*查询电话簿记录*/
case 5:Modify(tele,count);break; /*修改电话簿记录*/
cmaedu.com case 6:count=Insert(tele,count);break; /*插入电话簿记录*/
case 7:SelectSort(tele,count);break; /*排序电话簿记录*/
cmaedu.com case 8:Save(tele,count);break; /*保存电话簿记录*/
default: Wrong();getchar();break; /*按键有误,必须为数值0-9*/
cmaedu.com
/*【用C语言编写具有数据插入、修改、删除、显示和查询功能的电话薄管理程序】
1、数据包括:人名、工作单位、电话号码和E-mail地址。
2、可对记录中的姓名和电话号码进行修改。
3、可增加或删除记录。
cmaedu.com4、可显示所有保存的记录。
5、可按人名或电话号码进行查询。
另:采用结构体数组和文件系统实现。结构体包括人名、工作单位、电话号码和E-mail
cmaedu.com绝对原创,2010年7月12日晚刚写完测试通过的,纯C语言! */
cmaedu.com#include stdio.h
#include stdlib.h
cmaedu.com#include string.h
cmaedu.com#define szSTR 64
#define fileDB "c:\\contact.txt"
cmaedu.comstruct CONTACT {
char name[szSTR];/*姓名*/
cmaedu.com char unit[szSTR];/*工作单位*/
char tele[szSTR];/*电话*/
cmaedu.com char mail[szSTR];/*mail*/
typedef struct CONTACT CON;
cmaedu.com#define BNAME 1
cmaedu.com#define BUNIT 2
cmaedu.com#define BTELE 4
cmaedu.com#define BMAIL 8
cmaedu.com#define BFULL 0xFF
int OPER[5] = {BFULL, BNAME, BUNIT, BTELE, BMAIL};
cmaedu.comvoid input(CON * s, int mask)
if(mask BNAME) { printf("请输入学生姓名:"); scanf("%s", s-name); }
if(mask BUNIT) { printf("请输入工作单位:"); scanf("%s", s-unit); }
cmaedu.com if(mask BTELE) { printf("请输入联系电话:"); scanf("%s", s-tele); }
if(mask BMAIL) { printf("请输入电子邮件:"); scanf("%s", s-mail); }
cmaedu.com}/*end input*/
cmaedu.comvoid show (int id, CON * s)
cmaedu.com if(!s) return ;
if(id)
cmaedu.com printf("%d\t%s\t%s\t%s\t%s\n",
id, s-name , s-unit , s-tele , s-mail );
cmaedu.com else
cmaedu.com printf("【姓名】%s【工作单位】%s【电话】%s【电邮】%s\n",
cmaedu.com s-name , s-unit , s-tele , s-mail );
/*end if*/
}/*end show*/
void regist(void)
CON s; FILE * f = 0;
input(s, BFULL);
f = fopen(fileDB, "ab");
cmaedu.com fwrite(s,sizeof(s),1,f);
fclose(f);
cmaedu.com printf("资料已保存!\n");
cmaedu.com}/*end regist*/
int browse(char * key, fpos_t * p, CON * s)
cmaedu.com FILE * f =0; int i = 0, r = 0; CON t;
char * a = 0, * b = 0; fpos_t q;
cmaedu.com if(!s) return 0;
f = fopen(fileDB, "rb");
cmaedu.com if(!f) {
cmaedu.com printf("数据库暂无记录\n");
return 0;
}/*end if*/
printf("编号\t姓名\t单位\t电话\t电邮\n");
printf("------------------------------------------------\n");
cmaedu.com while(!feof(f)) {
fgetpos(f, q);
r = fread(t, sizeof(t), 1, f);
if(r1)break;
cmaedu.com if(t.name[0]==0) continue;
if(key) {
cmaedu.com a = strstr(t.name , key);
cmaedu.com b = strstr(t.tele , key);
cmaedu.com if(a == 0 b == 0) continue;
}/*end if*/
cmaedu.com if(p) *p = q;
cmaedu.com if(s) memcpy(s, t, sizeof(t));
i++;
show(i, t);
cmaedu.com }/*end while*/
fclose(f);
printf("------------------------------------------------\n");
return i;
cmaedu.com}/*end browse*/
cmaedu.comfpos_t query(CON * s)
char key[szSTR]=""; fpos_t p = 0; int r = 0;
cmaedu.com printf("请输入姓名或者电话号码:");
cmaedu.com scanf("%s", key);
cmaedu.com r = browse(key, p, s);
cmaedu.com return r?p:-1;
}/*end query*/
cmaedu.comvoid clear(void)
cmaedu.com FILE * f = 0; CON s;
fpos_t p = query(s);
if(p0) return;
cmaedu.com f = fopen(fileDB, "rb+");
cmaedu.com fsetpos(f, p);
cmaedu.com memset(s, 0, sizeof(s));
fwrite(s, sizeof(s),1, f);
fclose(f);
cmaedu.com printf("记录已删除!\n");
cmaedu.com}/*end clear*/
cmaedu.comvoid modify(void)
FILE * f = 0; CON s; int cmd = 0;
fpos_t p = query(s);
if(p0) return;
f = fopen(fileDB, "rb+");
cmaedu.com fsetpos(f, p);
cmaedu.com for(;;) {
show(0, s);
cmaedu.com printf("请选择:1-姓名;2-工作单位;3-电话;4-电邮;5-保存并退出;6-放弃修改并退出\n");
cmaedu.com scanf("%d", cmd);
switch(cmd) {
cmaedu.com case 1:
case 2:
cmaedu.com case 3:
case 4:
input(s, OPER[cmd]);
cmaedu.com break;
case 5:
fsetpos(f, p);
fwrite(s, sizeof(s), 1, f);
cmaedu.com case 6:
cmaedu.com fclose(f);
return;
cmaedu.com default:
printf("错误的操作,请重新输入。\n");
cmaedu.com }/*end case*/
}/*mext*/
}/*end clear*/
cmaedu.comint main(void)
cmaedu.com int cmd = 0; CON s;
for(;;) {
cmaedu.com printf("欢迎使用通信簿!请选择:1-添加;2-查询;3-删除;4-修改;5-全部输出;0-退出\n");
cmaedu.com scanf("%d", cmd);
switch(cmd) {
cmaedu.com case 0: return 0;
cmaedu.com case 1: regist(); break;
case 2: query(s); break;
case 3: clear(); break;
cmaedu.com case 4: modify(); break;
cmaedu.com case 5: browse(0, 0, s); break;
cmaedu.com }//end case
cmaedu.com return 0;
cmaedu.com#define N 100
cmaedu.com#define SIZE 30
#include stdio.h
#include string.h
#include conio.h
struct student{
cmaedu.com char num[SIZE];
char name[SIZE];
char tel[SIZE];
cmaedu.com/*函数声明*/
cmaedu.comvoid myprint();/*显示菜单*/
int mycreat(struct student*p,int n);/*输入通讯录*/void mydisplay(struct student*p,int n);/*显示通讯录*/void mysearch(struct student*p,int n);/*查找*/
cmaedu.comvoid mymodify(struct student*p,int n);/*修改通讯录*/int myadd(struct student*p,int n);/*增加通讯录*/int mydelete(struct student*p,int n);/*删除*/void mysort(struct student*p,int n);/*排序*/
void sch_num(struct student*p,int n);/*按学号查找*/void sch_name(struct student*p,int n);/*按姓名查找*/
int loadinfo(struct student*p,int n);/*载入通讯录信息*/int saveinfo(struct student*p,int n);/*保存通讯录信息*/void main(){
/*文件定义*/char choose,yes_no;
cmaedu.comstruct studentrecord[N];/*存放通讯录信息,共100条*/int total=0,flag;/*通讯录总数*/
cmaedu.comtotal=loadinfo(record,N);/*从文件读取记录信息,不超过100条*/do{
cmaedu.commyprint();/*显示菜单*/
cmaedu.comprintf("请选择:");do{
choose=getchar();}
while(choose'0'||choose'9');switch(choose){
case'1':
total=mycreat(record,total);break;case'2':
mydisplay(record,total);break;case'3':
cmaedu.commysearch(record,total);break;case'4':
cmaedu.commymodify(record,total);break;case'5':
total=myadd(record,total);break;case'6':
total=mydelete(record,total);break;case'7':
mysort(record,total);break;case'8':
flag=saveinfo(record,total);if(flag==1)
cmaedu.comprintf("\n保存成功!\n");else
printf("\n保存失败!\n");break;case'0':
break;default:
printf("\n%c为非法选项!\n",choose);}
cmaedu.comif(choose=='0')break;printf("\n要继续选择吗(Y/N)?");do{
yes_no=getchar();}
cmaedu.comwhile(yes_no!='Y'yes_no!='y'yes_no!='N'yes_no!='n');}
while(yes_no!='Y'||yes_no!='y');}
cmaedu.comvoid myprint()/*显示菜单信息*/{
cmaedu.comprintf("\n\n\n\n\n");printf("\n");printf("请输入选项编号(0--7)\n");printf("1---批量输入通讯录\n");printf("2---显示通讯录\n");printf("3---查询通讯录\n");printf("4---修改通讯录\n");printf("5---添加通讯录\n");printf("6---删除通讯录\n");printf("7---排序通讯录\n");printf("8---保存通讯录\n");printf("0---退出\n");printf("\n");
cmaedu.comint mycreat(struct student*p,int n)/*批量输入学生信息*/{
cmaedu.comint i=0;int m;
printf("添加前的记录,共有%d个:\n",n);printf("\n记录号学号姓名电话号码\n");
cmaedu.comi=0;
cmaedu.comwhile((in)(strcmp(p-num,"")!=0)){
cmaedu.comprintf("%d:%15s%15s%15s\n",i+1,p-num,p-name,p-tel);i++;p++;}
cmaedu.comprintf("\n请输入要输入的学生人数(%d):",N-n);
scanf("%d",m);i=0;
cmaedu.comwhile(im){
printf("\n");
cmaedu.comprintf("请输入第%d个记录:\n",i+1);printf("学号:");do{
cmaedu.comgets(p-num);}
while(strcmp(p-num,"")==0);printf("姓名:");gets(p-name);
cmaedu.comprintf("电话号码:");gets(p-tel);p++;i++;}
cmaedu.comreturn m+n;}
void mydisplay(struct student*p,int n)/*显示学生信息*/{
cmaedu.com/*clrscr();*/int i=0;
printf("\n记录号学号姓名电话号码\n");while(in){
cmaedu.comprintf("%d:%15s%15s%15s\n",i+1,p-num,p-name,p-tel);p++;i++;}}
cmaedu.comvoid mymodify(struct student*p,int n)/*修改学生信息*/{
int i;
cmaedu.comchar nam[10];mydisplay(p,n);
cmaedu.comprintf("\n请输入要修改记录的姓名:");gets(nam);
cmaedu.comfor(i=0;in;i++,p++)
cmaedu.comif(strcmp(nam,p-name)==0)break;if(i==n)
printf("无此人!\n");else{
cmaedu.comprintf("请输入正确的学号:");do{
cmaedu.comgets(p-num);}
while(strcmp(p-num,"")==0);printf("请输入正确的姓名:");gets(p-name);
cmaedu.comprintf("请输入正确的电话号码:");gets(p-tel);}
cmaedu.comvoid mysearch(struct student*p,int n)/*查找指定学生*/{
cmaedu.comchar c;
mydisplay(p,n);
printf("\n按学号查询(h),还是按姓名查询(m)?");c=getchar();
cmaedu.comif(c=='h'||c=='H')
cmaedu.comsch_num(p,n);else if(c=='m'||c=='M')
sch_name(p,n);else
cmaedu.comprintf("\n非法字符!\n");}
void sch_num(struct student*p,int n)/*按学号查询*/{
int i,flag=0;char nm[10];
cmaedu.comprintf("\n请输入要查询记录的学号:");gets(nm);
cmaedu.comfor(i=0;in;i++)
cmaedu.comif(strcmp(nm,p[i].num)==0)
printf("\n学号姓名电话号码\n");printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);flag=1;
cmaedu.comif(flag==0)
printf("无此人!\n");}
cmaedu.comvoid sch_name(struct student*p,int n)/*按姓名查询*/{
cmaedu.comint i,flag=0;char nam[10];
cmaedu.comprintf("\n请输入要查询记录的姓名:");gets(nam);
cmaedu.comfor(i=0;in;i++)
if(strcmp(nam,p[i].name)==0){
cmaedu.comprintf("\n学号姓名电话号码\n");printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);flag=1;}
if(flag==0)
printf("无此人!\n");
cmaedu.comint myadd(struct student*p,int n)/*增加学生信息*/{
cmaedu.comint i=0;char c;
cmaedu.comstruct studentt,*q;
cmaedu.comprintf("添加前的记录:\n");printf("\n学号姓名电话号码\n");i=0;q=p;
cmaedu.com/*显示原有记录信息*/while(in){
cmaedu.comprintf("%15s%15s%15s\n",q-num,q-name,q-tel);i++;q++;}do{
printf("请输入新记录的学号:\n");do{
cmaedu.comgets(t.num);
while(strcmp(t.num,"")==0);/*学号不能为空*/printf("请输入新记录的姓名:");gets(t.name);
printf("请输入新记录的电话号码:");gets(t.tel);
for(i=0;in;i++)
cmaedu.comif(strcmp(t.num,(p+i)-num)==0||strcmp(t.tel,(p+i)-tel)==0){
printf("学号或电话号码重,要重新输入吗(Y/N)?");c=getchar();putchar ('\n');break;}
/*找到最后,没有重复*/if(i==n){
cmaedu.com*(p+i)=t;
cmaedu.comprintf("添加后的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in+1;i++)
printf("%15s%15s%15s\n",(p+i)-num,(p+i)-name,p[i].tel);break;}
while(c=='y'||c=='Y');return n+1;}
cmaedu.comint mydelete(struct student*p,int n)/*删除学生信息*/{
cmaedu.comint i,x;
char c,nm[10],nam[10];
cmaedu.comprintf("删除前的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)
cmaedu.comprintf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);printf("按学号删除(h),还是按姓名删除(m)?");c=getchar();
cmaedu.comif(c=='h'||c=='H'){
cmaedu.comprintf("\n请输入要删除记录的学号:");gets(nm);
cmaedu.comfor(x=0;xn;x++)
gets(t.num);
cmaedu.comwhile(strcmp(t.num,"")==0);/*学号不能为空*/printf("请输入新记录的姓名:");gets(t.name);
cmaedu.comprintf("请输入新记录的电话号码:");gets(t.tel);
for(i=0;in;i++)
cmaedu.comif(strcmp(t.num,(p+i)-num)==0||strcmp(t.tel,(p+i)-tel)==0){
cmaedu.comprintf("学号或电话号码重,要重新输入吗(Y/N)?");c=getchar();putchar ('\n');break;}
/*找到最后,没有重复*/if(i==n){
cmaedu.com*(p+i)=t;
cmaedu.comprintf("添加后的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in+1;i++)
printf("%15s%15s%15s\n",(p+i)-num,(p+i)-name,p[i].tel);break;}
while(c=='y'||c=='Y');return n+1;}
int mydelete(struct student*p,int n)/*删除学生信息*/{
cmaedu.comint i,x;
cmaedu.comchar c,nm[10],nam[10];
cmaedu.comprintf("删除前的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)
cmaedu.comprintf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);printf("按学号删除(h),还是按姓名删除(m)?");c=getchar();
if(c=='h'||c=='H'){
printf("\n请输入要删除记录的学号:");gets(nm);
cmaedu.comfor(x=0;xn;x++)
int j,i,k;char c1,c2;
struct studenttemp;
cmaedu.comprintf("\n排序前的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)
printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);printf("\n按学号排序(h),还是按姓名排序(m)?");c1=getchar();
cmaedu.comif(c1=='h'||c1=='H'){
cmaedu.comprintf("\n按升序排序(s),还是按降序排序(j)?");c2=getchar();/*升序*/
cmaedu.comif(c2=='s'||c2=='S'){
cmaedu.comfor(i=0;in-1;i++){
k=i;
cmaedu.comfor(j=i;jn;j++)
cmaedu.comif(strcmp(p[k].num,p[j].num)0)
k=j;
temp=p[k];p[k]=p[i];p[i]=temp;
printf("\n排序后的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)
printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}
else if(c2=='j'||c2=='J')/*降序*/{
for(i=0;in-1;i++){
cmaedu.comk=i;
for(j=0;jn;j++)
if(strcmp(p[k].num,p[j].num)0)
k=j;
temp=p[k];p[k]=p[i];p[i]=temp;
printf("排序后的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)
printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}
cmaedu.comelse printf("\n非法字符\n");}
cmaedu.comelse if(c1=='m'||c1=='M')/*按姓名排序*/{
printf("\n按升序排序(s),还是按降序排序(j)?");c2=getchar();
cmaedu.comif(c2=='s'||c2=='S'){
cmaedu.comfor(i=0;in-1;i++){
k=i;
for(j=0;jn;j++)
if(strcmp(p[k].name,p[j].name)0)
cmaedu.comk=j;
cmaedu.comtemp=p[k];p[k]=p[i];p[i]=temp;}
cmaedu.comprintf("排序后的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)
printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);
else if(c2=='j'||c2=='J')/*降序*/{
cmaedu.comfor(i=0;in-1;i++){
cmaedu.comk=i;
for(j=i;jn;j++)
if(strcmp(p[k].name,p[j].name)0)
cmaedu.comk=j;
temp=p[k];p[k]=p[i];p[i]=temp;
cmaedu.comprintf("排序后的记录:\n");printf("\n学号
姓名电话号码\n");
cmaedu.comfor(i=0;in;i++)
cmaedu.comprintf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}
else printf("\n非法字符!\n");}
cmaedu.comelse printf("\n非法字符!\n");}
int loadinfo(struct student*p,int n)/*载入通讯录信息*/{
cmaedu.comFILE*fp;int i,all=0;
char filename[30]="tongxunlu.txt";fp=fopen(filename,"r");if(fp==NULL){
cmaedu.comprintf("\n***不能打开文件%s,或%s文件不存在,创建一个新文件!
",filename,filename);*/
cmaedu.comfp=fopen(filename,"w");}
cmaedu.comfscanf(fp,"%d\n",all);
cmaedu.comif(allN)/*读取记录总数*/{
printf("文件记录数太多,不能读取");return 0;}
for(i=0;iall;i++)/*读取记录信息*/{
cmaedu.comfscanf(fp,"%s%s%s\n",p[i].num,p[i].name,p[i].tel);}
cmaedu.comfclose(fp);/*关闭文件*/return all;}
cmaedu.comint saveinfo(struct student*p,int n){
cmaedu.comFILE*fp;int i,all=0;
cmaedu.comchar filename[30]="txl.dat";/*文件可以用记事本打开*/fp=fopen(filename,"w");if(fp==NULL){
cmaedu.comprintf("\n***不能建立或打开文件%s!***",filename);return 0;}
cmaedu.comfprintf(fp,"%d\n",n);for(i=0;in;i++)
cmaedu.comfprintf(fp,"%s%s%s\n",p[i].num,p[i].name,p[i].tel);fclose(fp);return 1;}
cmaedu.com抄来的
cmaedu.com对数据的存储结构有要求吗?
cmaedu.com#include stdio.h
#include string.h
const int MAX_NAME = 99;
cmaedu.comconst int MAX_PHONE = 27;
cmaedu.comconst int MAX_ADDR = 127;
cmaedu.comtypedef struct _PersonInfo
char name[MAX_NAME + 1];
char phone[MAX_PHONE + 1];
cmaedu.com char addr[MAX_ADDR + 1];
cmaedu.com}PersonInfo ;
const char *ID = "编号:";
const char *NAME = "姓名:";
cmaedu.comconst char *PHONE = "电话:";
cmaedu.comconst char *ADDR = "地址:";
cmaedu.comconst int MAX_NUM = 512;
PersonInfo g_piArry[MAX_NUM];
static int read_line ( FILE *fp, char *line, int max_length )
int i;
cmaedu.com char ch;
/* initialize index to string character */
cmaedu.com i = 0;
cmaedu.com /* read to end of line, filling in characters in string up to its
maximum length, and ignoring the rest, if any */
cmaedu.com for(;;)
cmaedu.com /* read next character */
ch = fgetc(fp);
/* check for end of file error */
cmaedu.com if ( ch == EOF )
cmaedu.com return -1;
/* check for end of line */
cmaedu.com if ( ch == '\n' )
/* terminate string and return */
line[i] = '\0';
cmaedu.com return 0;
/* fill character in string if it is not already full*/
if ( i max_length )
cmaedu.com line[i++] = ch;
/* the program should never reach here */
return -1;
void menu_add();
cmaedu.comvoid menu_print();
cmaedu.comvoid menu_delete();
cmaedu.comvoid menu_modify();
cmaedu.comvoid menu_detail();
/* codes for menu */
cmaedu.com#define PRINT_CODE 1
#define ADD_CODE 2
#define DEL_CODE 3
cmaedu.com#define MOD_CODE 4
cmaedu.com#define DETAIL_CODE 5
cmaedu.com#define EXIT_CODE 6
int main(void)
cmaedu.com memset(g_piArry, 0, sizeof(g_piArry));
for(;;)
int choice, result;
char line[301];
// FILE *fp1=fopen("input2","r");
cmaedu.com/* print menu to standard error */
cmaedu.com fprintf ( stderr, "\nOptions:\n" );
cmaedu.com fprintf ( stderr, "%d: 显示所有已录入的通讯录\n", PRINT_CODE );
cmaedu.com fprintf ( stderr, "%d: 录入新纪录\n", ADD_CODE );
fprintf ( stderr, "%d: 删除一条记录\n", DEL_CODE );
cmaedu.com fprintf ( stderr, "%d: 修改一条纪录\n", MOD_CODE );
cmaedu.com fprintf ( stderr, "%d: 根据姓名,电话或地址查询相关信息\n", DETAIL_CODE );
cmaedu.com fprintf ( stderr, "%d: 退出系统\n", EXIT_CODE );
cmaedu.com fprintf ( stderr, "\nEnter option: " );
cmaedu.com if ( read_line ( stdin, line, 300 ) != 0 ) continue;
// read_line (fp1 , line, 300 ) ;
//printf("\n-----------%s-----------\n",line);
cmaedu.com result = sscanf ( line, "%d", choice );
if ( result != 1 )
cmaedu.com fprintf ( stderr, "corrupted menu choice\n" );
cmaedu.com continue;
switch ( choice )
case ADD_CODE: /* add book to database */
cmaedu.com menu_add();
cmaedu.com break;
cmaedu.com case PRINT_CODE: /* get book details from database */
cmaedu.com menu_print();
cmaedu.com break;
case DEL_CODE: /* delete book from database */
menu_delete();
break;
cmaedu.com case MOD_CODE: /* print database contents to screen
cmaedu.com (standard output) */
menu_modify();
break;
cmaedu.com case DETAIL_CODE: /* print tree to screen (standard output) */
cmaedu.com menu_detail();
cmaedu.com break;
cmaedu.com /* exit */
case EXIT_CODE:
break;
cmaedu.com default:
fprintf ( stderr, "illegal choice %d\n", choice );
break;
/* check for exit menu choice */
if ( choice == EXIT_CODE )
cmaedu.com break;
cmaedu.com return 0;
cmaedu.combool isdigit(char n)
if (n = '9' n = '0')
return true;
cmaedu.com else
return false;
int IsString(char *szBuff)
cmaedu.com const int nLen = strlen(szBuff);
int nDigitCnt = 0;
int nPos = 0;
for (nPos = 0; nPos nLen; nPos++)
if (isdigit(szBuff[nPos]))
nDigitCnt++;
cmaedu.com if (nLen == nDigitCnt)
fprintf(stderr, "The words(%s) which you entered is digits, enter again!\n", szBuff);
cmaedu.com return 0;
return 1;
/* trim the space of the words */
cmaedu.comstatic int trim_space(char *p)
cmaedu.com char *q = NULL;
cmaedu.com if(*p != '\0')
q = p + strlen(p) - 1;
cmaedu.com else
return -1;
for(; *q == ' '; q--);
cmaedu.com *(q + 1) ='\0';
cmaedu.com for(q = p; *q == ' '; q++);
strcpy(p,q);
return 0;
void print_node(PersonInfo *node, int n)
fprintf(stderr, "%s", ID);
printf("%d\n", n);
cmaedu.com fprintf(stderr, "%s", NAME);
cmaedu.com printf("%s\n", node-name);
cmaedu.com fprintf(stderr, "%s", PHONE);
cmaedu.com printf("%s\n", node-phone);
fprintf(stderr, "%s", ADDR);
cmaedu.com printf("%s\n", node-addr);
cmaedu.comvoid menu_add()
cmaedu.com char name[MAX_NAME + 1] = {0};
cmaedu.com char phone[MAX_PHONE + 1] = {0};
char addr[MAX_ADDR + 1] = {0};
cmaedu.com int nId = 0;
do
cmaedu.com fprintf(stderr, "%s", ID);
cmaedu.com scanf("%d", nId);
cmaedu.com getchar();
cmaedu.com }while(nId = MAX_NUM nId 1);
cmaedu.com int nLen = 0;
cmaedu.com do
cmaedu.com fprintf(stderr, "%s", NAME);
cmaedu.com fgets(name, MAX_NAME, stdin);
nLen = strlen(name) - 1;
cmaedu.com name[nLen] = '\0';
cmaedu.com trim_space(name);
}while (!IsString(name));
fprintf(stderr, "%s", PHONE);
fgets(phone, MAX_PHONE, stdin);
nLen = strlen(phone) - 1;
cmaedu.com phone[nLen] = '\0';
cmaedu.com fprintf(stderr, "%s", ADDR);
fgets(addr, MAX_ADDR, stdin);
cmaedu.com nLen = strlen(addr) - 1;
addr[nLen] = '\0';
nId = nId - 1;
cmaedu.com PersonInfo *pi = g_piArry[nId];
if (0 != strlen(pi-name))
int i = 0;
cmaedu.com for (i = MAX_NUM; i nId; i--)
cmaedu.com memcpy(g_piArry[i], g_piArry[i - 1], sizeof(PersonInfo));
cmaedu.com strcpy(pi-name, name);
cmaedu.com strcpy(pi-phone, phone);
cmaedu.com strcpy(pi-addr, addr);
return;
void menu_print()
int n = 0;
cmaedu.com for (n = 0; n MAX_NUM; n++)
cmaedu.com if (0 != strlen(g_piArry[n].name))
cmaedu.com print_node(g_piArry[n], n + 1);
cmaedu.com return;
void menu_delete()
cmaedu.com int nId = 0;
cmaedu.com do
cmaedu.com fprintf(stderr, "%s", ID);
cmaedu.com scanf("%d", nId);
getchar();
}while(nId = MAX_NUM nId 1);
cmaedu.com PersonInfo *pi = g_piArry[nId];
int i = 0;
cmaedu.com for (i = nId - 1; i MAX_NUM - 1; i++)
memcpy(g_piArry[i], g_piArry[i + 1], sizeof(PersonInfo));
fprintf(stderr, "删除成功(%s)", nId);
return ;
void menu_modify()
int nId = 0;
do
cmaedu.com fprintf(stderr, "%s", ID);
scanf("%d", nId);
cmaedu.com getchar();
cmaedu.com }while(nId = MAX_NUM nId 1);
char name[MAX_NAME + 1] = {0};
char phone[MAX_PHONE + 1] = {0};
cmaedu.com char addr[MAX_ADDR + 1] = {0};
int nLen = 0;
cmaedu.com do
fprintf(stderr, "%s", NAME);
cmaedu.com fgets(name, MAX_NAME, stdin);
nLen = strlen(name) - 1;
name[nLen] = '\0';
cmaedu.com trim_space(name);
}while (!IsString(name));
fprintf(stderr, "%s", PHONE);
fgets(phone, MAX_PHONE, stdin);
cmaedu.com nLen = strlen(phone) - 1;
phone[nLen] = '\0';
fprintf(stderr, "%s", ADDR);
cmaedu.com fgets(addr, MAX_ADDR, stdin);
nLen = strlen(addr) - 1;
addr[nLen] = '\0';
cmaedu.com nId = nId - 1;
cmaedu.com PersonInfo *pi = g_piArry[nId];
cmaedu.com strcpy(pi-name, name);
strcpy(pi-phone, phone);
strcpy(pi-addr, addr);
return ;
void menu_detail()
cmaedu.com int nId = 0;
do
fprintf(stderr, "%s", ID);
cmaedu.com scanf("%d", nId);
cmaedu.com getchar();
cmaedu.com }while(nId = MAX_NUM nId 1);
print_node(g_piArry[nId - 1], nId);
cmaedu.com return;
去移动大厅打印通话记录单需要拿什么证件吗? 1、需要携带手机和手机号的服务密码。拉电话清单在移动营业厅的自助机上就可打印电话清单,不需要携带身份证及其他证件。移动的电话清单也可在网上营业厅打印,具体步...
安卓手机通话记录怎么导入到苹果手机 具体如下:1. 首先,我们打开安卓手机中的联系人,如图。2. 在之后在通讯录界面点击右上角的“三个点”图标,之后点击【导入/导出】,如图。3.然后点击【分享联系人】...
怎么在通话记录里看通话时间 如您是联通用户,需查询通话详单,可通过服务密码加验证码登录中国联通APP的方式进行查询的,目前只能查近六个月的,您可登录中国联通APP后,首页点击“服务”>“查询”>“基础...
如何成为黑客 对一个黑客来说,学会编程是必须的,计算机可以说就是为了编程而设计的,运行程序是计算机的唯一功能。对了,数学也是不可少的,运行程序其实就是运算,离散数学、线性代数、微积分等。经常逛“华中帝...
求一本主角是黑客的小说 想不起来叫什么了 呃,应该是《禁区之门》主角叫米特尼克。你说的是第一部。尼克出场时年纪很小,父亲对他不算太好。他捡垃圾换钱、也捡旧的电子元件自己组装电台。后来老师介绍他去社区图...
韩版的三星s9 怎么设置来电归属地,为啥按照你的方法,设置里面没有号码归属地这一项 三星手机设置来电归属地方法:电话图标-右上角更多-设置-号码归属地(来电归属地)-滑动开启/关闭。开启来电归属地功能...