通讯录的添加、删除、修改、查找及显示所有联系人功能分别由5个函数现,用switch实现整体功能的选择及推进
注:stdin->_IO_read_ptr=stdin->_IO_read_end;此句为Linux系统中清理缓冲区语句,在其他系统下无法正常运行,可采用其他方法清理输入缓冲区
例如:
int len=0;
while(str[len]) len++;
if('\n'!=str[len-1])
{
scanf("%*[^\n]");
//从缓冲区中读取任意数据并丢弃,如果不是'\n',继续读取,直到遇到'\n',停止读取(正则表达式)
scanf("%*c");
//从缓冲区中读取一个字符,并丢弃
}
输入scanf("%*[^\n]"); scanf("%*c");两个语句
#include<stdio.h>
#include<string.h>
#include<getch.h>
char name[50][20]={};
char gender[50]={};
char tele[50][12]={};
void add(void)
{
//先判断
for(int i=0;i<50;i++)
{
if(gender[i]!='M'&&gender[i]!='W')
{
printf("请输入姓名:");
scanf("%s",name[i]);
printf("请输入性别:");
scanf(" %c",&gender[i]);
printf("请输入电话号码:");
stdin->_IO_read_ptr=stdin->_IO_read_end;
scanf(" %s",tele[i]);
printf("添加成功!\n");
return;
}
}
printf("无法添加联系人\n");
}
void delete(void)
{
char input[20]={};
if(name)
{
printf("请输入要删除的联系人的姓名:");
scanf("%s",input);
for(int i=0;i<50;i++)
{
if(0==strcmp(input,name[i]))//cmp
{
gender[i]=1;
return;//提前结束函数
}
}
printf("查无此人");
}
}
void revise(void)
{
char str[20]={};
printf("请输入要修改的联系人姓名:\n");
scanf("%s",str);
for(int i=0;i<50;i++)
{
if(0==strcmp(str,name[i]))
{
printf("请输入姓名:");
scanf("%s",name[i]);
printf("请输入性别:");
scanf(" %c",&gender[i]);
printf("请输入电话号码:");
stdin->_IO_read_ptr=stdin->_IO_read_end;
scanf("%s",tele[i]);
printf("修改成功!\n");
return;
}
}
printf("查无此人\n");
}
void find(void)
{//遍历二位数组
char x[12]={};
printf("请输入要查找人的信息:\n");
scanf("%s",x);
for(int i=0;i<50;i++)
{
if((int)strstr(name[i],x)||(int)strstr(tele[i],x))
printf("%s %c %s\n",name[i],gender[i],tele[i]);
}
}
void show(void)
{
for(int i=0;i<50;i++)
{
if(gender[i]=='M'||gender[i]=='W')
printf("%s %c %s\n",name[i],gender[i],tele[i]);
}
}
int main (int argc,const char* argv[])
{
int num=0;
do{
printf("-----------------------------------------\n");
printf("1.添加联系人\n");
printf("2.删除联系人\n");
printf("3.修改联系人信息\n");
printf("4.查找联系人\n");
printf("5.显示所有联系人信息\n");
printf("-----------------------------------------\n");
printf("请选择功能:\n");
switch(getch())
{
case 49:
add();
break;
case 50:
delete();
break;
case 51:
revise();
break;
case 52:
find();
break;
case 53:
show();
break;
case 54:
return 0;
}
stdin->_IO_read_ptr=stdin->_IO_read_end;
}while(1);
}