ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

通信录

2021-07-10 17:33:00  阅读:167  来源: 互联网

标签:IO read void stdin char str 通信录


题目要求:

通信录
电话、姓名、级别
char tel[100][12];
char name[100][10];
char level[100];
1.添加联系人
2.删除联系人
3.查询联系人
4.修改联系人
5.列出联系人

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <getch.h>

char name[100][10];
char tel[100][12];
char level[100];

void anykey_continue(void)
{
	stdin->_IO_read_ptr = stdin->_IO_read_end;
	puts("按任意键继续...");
	getch();
	stdin->_IO_read_ptr = stdin->_IO_read_end;
}

char* get_str(char* str,size_t size)
{
	// 限制输入的字符度
	fgets(str,size,stdin);
	// 计算实际输入的字符数量
	size_t len = strlen(str);
	// 判断最一个字符是否是'\n'
	if('\n' == str[len-1])
	{
		// 删除'\n'
		str[len-1] = '\0';
	}
	else
	{
		// 清理输入缓冲区
		stdin->_IO_read_ptr = stdin->_IO_read_end;
	}
	return str;
}

void add(void)
{
	int i = 0;
	while(level[i])i++;

	printf("请输入姓名:");
	get_str(name[i],10);
	printf("请输入电话:");
	get_str(tel[i],12);
	printf("请输入级别:");
	scanf("%c",&level[i]);
	printf("姓名:%s 电话:%s 级别:%c 添加联系人成功!\n",
		name[i],tel[i],level[i]);
	sleep(1);
}

void del(void)
{
	char key[10];
	printf("请输入要删除的联系人姓名:");
	get_str(key,10);

	for(int i=0; i<100; i++)
	{
		if(level[i] && !strcmp(key,name[i]))
		{
			printf("姓名:%s 电话:%s 级别:%c 删除联系人成功!\n",name[i],tel[i],level[i]);
			level[i] = 0;
			sleep(1);
			return;
		}
	}
	printf("未找到联系人,删除失败!\n");
	sleep(1);
}

void mod(void)
{
	char key[10];
	printf("请输入要修改的联系人姓名:");
	get_str(key,10);
	
	for(int i=0; i<100; i++)
	{
		if(level[i] && !strcmp(key,name[i]))
		{
			puts("请重新输入联系人信息!");
			printf("请输入姓名:");
			get_str(name[i],10);
			printf("请输入电话:");
			get_str(tel[i],12);
			printf("请输入级别:");
			scanf("%c",&level[i]);
			printf("姓名:%s 电话:%s 级别:%c 修改联系人成功!\n",name[i],tel[i],level[i]);
			sleep(1);
			return;
		}
	}
	printf("未找到联系人,无法修改!\n");
	sleep(1);
}

void find(void)
{
	char key[12];
	printf("请输入要查询的关键字:");
	get_str(key,12);
	
	for(int i=0; i<100; i++)
	{
		if(level[i] && (strstr(name[i],key) || strstr(tel[i],key)))
		{
			printf("%s %s %c\n",name[i],tel[i],level[i]);
		}
	}
	anykey_continue();
}

void list(void)
{
	for(int i=0; i<100; i++)
	{
		if(level[i])
		{
			printf("%s %s %c\n",name[i],tel[i],level[i]);
		}
	}
	anykey_continue();
}

int get_cmd(char start,char end)
{
	puts("------------------");
	printf("请输入指令:");
	for(;;)
	{
		char cmd = getch();
		if(start <= cmd && cmd <= end)
		{
			printf("%c\n",cmd);
			return cmd;
		}
	}
}

void menu(void)
{
	system("clear");
	puts("*****欢迎使用通讯录*****");
	puts("1、添加联系人");
	puts("2、删除联系人");
	puts("3、修改联系人");
	puts("4、查询联系人");
	puts("5、显示联系人");
	puts("6、退出");
}

int main()
{
	for(;;)
	{
		menu();
		switch(get_cmd('1','6'))
		{
		case '1': add(); break;
		case '2': del(); break;
		case '3': mod(); break;
		case '4': find(); break;
		case '5': list(); break;
		case '6': return 0;
		}
	}
}

标签:IO,read,void,stdin,char,str,通信录
来源: https://www.cnblogs.com/deric06/p/14994289.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有