指针实现通讯录
2015-06-05 17:26
190 查看
#ifndef __CONTACT_H__ #define __CONTACT_H__ #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct peole { char *name; char *sex; int age; char *tele; char *addr; }peo ; typedef struct Contact { peo *dhb; int count; }Pcon ; void menu(); void add_peo(Pcon *pcon); void del_peo(Pcon *pcon); void search_peo(Pcon *pcon); void modify_peo(Pcon *pcon); void show_peo(Pcon *pcon); void clear_peo(Pcon *pcon); int find(char *p, Pcon *pcon); #endif
#include "contact.h" #include<stdio.h> #include<stdlib.h> void menu() { printf("************************\n"); printf("* 1>add 2>del *\n"); printf("* 3>search 4>modify*\n"); printf("* 5>show 6>clear *\n"); printf("************************\n"); } int find(char *p, Pcon *pcon) { int i=0; for(i=0;i<pcon->count;i++) { if(strcmp(p,(pcon->dhb[i].name))==0) return i; } return -1; } void add_peo(Pcon *pcon) { if(pcon->count<1000) { printf("请输入名字:"); scanf("%s",pcon->dhb[pcon->count].name=(char *)malloc(20*sizeof(char))); printf("请输入年龄:"); pcon->dhb[pcon->count].age=(int)malloc(2*sizeof(int)); scanf("%d",&(pcon->dhb[pcon->count].age)); printf("请输入性别:"); scanf("%s",pcon->dhb[pcon->count].sex=(char *)malloc(10*sizeof(char))); printf("请输入电话:"); scanf("%s",pcon->dhb[pcon->count].tele=(char *)malloc(13*sizeof(char))); printf("请输入地址:"); scanf("%s",pcon->dhb[pcon->count].addr=(char *)malloc(10*sizeof(char))); pcon->count++; printf("添加成功!"); } else { printf("电话本已满!"); return; } } void del_peo(Pcon *pcon) { int ret; char *name=(char *)malloc(20*sizeof(char)+1); printf("请输入要删除人的名字:"); scanf("%s",name); ret=find(name,pcon); if(ret==-1) { printf("要删除的人不存在!"); return; } else { int index=0; for(index=ret;index<pcon->count;index++) { pcon->dhb[index]=pcon->dhb[index+1]; } pcon->count--; } } void search_peo(Pcon *pcon) { int ret; char * name=(char *)malloc(20*sizeof(char)+1); printf("请输入要查找人的名字:"); scanf("%s",name); ret=find(name,pcon); if(ret!=-1) { printf("%12s ",pcon->dhb[ret].name); printf("%12s ",pcon->dhb[ret].sex); printf("%12d ",pcon->dhb[ret].age); printf("%12s ",pcon->dhb[ret].tele); printf("%12s ",pcon->dhb[ret].addr); } } void modify_peo(Pcon *pcon) { int ret; char *name=(char *)malloc(20*sizeof(char)+1); printf("请输入要修改人的名字:"); scanf("%s",name); ret=find(name,pcon); if(ret!=-1) { printf("请输入名字:"); scanf("%s",pcon->dhb[ret].name); printf("请输入性别:"); scanf("%s",pcon->dhb[ret].sex); printf("请输入年龄:"); scanf("%d",&(pcon->dhb[ret].age)); printf("请输入电话:"); scanf("%s",(pcon->dhb[ret]).tele); printf("请输入地址:"); scanf("%s",(pcon->dhb[ret]).addr); } } void show_peo(Pcon *pcon) { int i=0; for(i=0;i<pcon->count;i++) { printf("%12s ",pcon->dhb[i].name); printf("%12s ",pcon->dhb[i].sex); printf("%12d ",pcon->dhb[i].age); printf("%12s ",pcon->dhb[i].tele); printf("%12s ",pcon->dhb[i].addr); } printf("\n"); } void clear_peo(Pcon *pcon) { pcon->count=0; }
#include "contact.h" int main() { Pcon my_contact; int input = 1; my_contact.dhb = (peo*)malloc(1000*sizeof(peo)); my_contact.count=0;//先赋个初值 while(input) { menu(); printf("请选择>"); scanf("%d",&input); switch(input) { case 1: add_peo(&my_contact); break; case 2: del_peo(&my_contact); break; case 3: search_peo(&my_contact); break; case 4: modify_peo(&my_contact); break; case 5: show_peo(&my_contact); break; case 6: clear_peo(&my_contact); break; } } free(my_contact.dhb); return 0; }
相关文章推荐
- 复制代码去除行号
- 人生的五大投资,你投错了吗?
- SQL Server日志清除的几种方法
- IS-IS协议和RIP协议的路由重分发详细过程
- 返回在指定日期内有几个指定的星期数
- htmlcleaner xpath的一些tips
- mysql日志详细解析 [转]
- IOS地图及定位使用
- php moungoDB
- LeetCode_22---Generate Parentheses
- 自定义安卓控件错误 Custom view MySwitchBtn is not using the 2- or 3-argument View constructors; XML attribute
- 测试博文
- 测试博文测试博文测试博文测试博文测试博文
- 如何写用户导向的互联网文案?
- sqlite
- 忽略时间,以'帧'为概念的重力系统(通过updatePosition来更新位置代替MoveTo)
- Microsoft SQL Server数据库文件恢复技术
- SBJson的使用
- SQL Server 存储过程的分页方案比拼
- Android中设置控件View显示、隐藏的不同属性的区别(VISIBLE,INVISIBLE,GONE)