用数组实现通讯录功能

         通讯录的添加、删除、修改、查找及显示所有联系人功能分别由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);
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值