通讯录动态实现
发布日期:2021-09-19 03:18:17
浏览次数:3
分类:技术文章
本文共 5007 字,大约阅读时间需要 16 分钟。
变量的存储可分为静态和动态俩种方式,
静态存储:指在程序运行期间分配固定的存储空间,即在定义时就分定存储单元,并一直保持不变,直至程序结束。(全局变量)
动态存储:在程序执行过程中才分配存储单元, 使用完毕就立即释放。(形参)
contact.h
#ifndef __CONTACT_H__#define __CONTACT_H__#pragma warning(disable:4996)#include函数实现#include #include #define NAME_MAX 20#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 25#define MAX 1000#define DEFAULT_SZ 3#define DEFAULT_INC 2typedef struct PerInfo{ char name[NAME_MAX]; int age; char sex[SEX_MAX]; char tele[TELE_MAX]; char addr[ADDR_MAX];}PerInfo;//typedef struct Contact//{// PerInfo data[MAX];// int size;// int capacity;//}Contact,*pcon;typedef struct Contact{ PerInfo *data; int size; int capacity;}Contact, *pcon;void InitContact(pcon pcon);void CheckContact(pcon pcon);void DestroyContact(pcon pcon);void AddContact(pcon pcon);//增void DisplayContact(pcon pcon);void DelContact(pcon pcon);//删int Find(pcon pcon,char *name);void SearchContact(pcon pcon);//查void ModifyContact(pcon pcon);//改void Sort(pcon pcon);void Clear(pcon pcon);#endif __CONTACT_H__
contact.c
#include"contact.h"#pragma warning(disable:4996)void InitContact(pcon pcon){ pcon->size = 0; pcon->capacity = DEFAULT_INC; pcon->data = (PerInfo*)malloc(pcon->capacity*sizeof(PerInfo)); if (pcon->data == NULL) { memset(pcon->data, 0, pcon->capacity*sizeof(PerInfo)); exit(EXIT_FAILURE); }}void CheckContact(pcon pcon){ PerInfo* tmp=0; if (pcon->size == pcon->capacity) { realloc(pcon->data, pcon->capacity + DEFAULT_INC); if (tmp == NULL) { ; } else { pcon->data = tmp; } pcon->capacity += DEFAULT_INC; }}void DestroyContact(pcon pcon){ if (pcon->data != NULL) { free(pcon->data); pcon->data = NULL; }}void AddContact(pcon pcon){ if (pcon->size >= MAX) { printf("the contact is full\n"); return; } printf("please enter name\n"); scanf("%s", pcon->data[pcon->size].name); printf("please enter age\n"); scanf("%d",&( pcon->data[pcon->size].age)); printf("please enter sex\n"); scanf("%s", pcon->data[pcon->size].sex); printf("please enter tele\n"); scanf("%s", pcon->data[pcon->size].tele); printf("please enter addr\n"); scanf("%s", pcon->data[pcon->size].addr); pcon->size++; printf("success\n");}void DisplayContact(pcon pcon){ int i = 0; for (i = 0; i < pcon->size; i++) { printf("name:%s\n", pcon->data[i].name); printf("age:%d\n", pcon->data[i].age); printf("sex:%s\n", pcon->data[i].sex); printf("tele:%s\n", pcon->data[i].tele); printf("addr:%s\n", pcon->data[i].addr); }}int Find(pcon pcon, char *name){ int i = 0; for (i = 0; i < pcon->size; i++) { if (strcmp(pcon->data[i].name, name) == 0) { return i; } } return -1;}void DelContact(pcon pcon){ if (pcon->size == 0) { printf("the contact is empty"); return; } char name[NAME_MAX]; int j = 0; printf("请输入要删除的名字\n"); scanf("%s", name); int pos = Find(pcon, name); if (pos == -1) { printf("找不到要删除的名字\n"); return; } for (j = pos; j < pcon->size; j++) { pcon->data[j] = pcon->data[j + 1]; } pcon->size--; printf("删除成功\n");}void SearchContact(pcon pcon){ char name[NAME_MAX] = {0}; int pos = 0; printf("请输入要查找的姓名\n"); scanf("%s", &name); pos = Find(pcon, name); if (pos == -1) { printf("找不到要查找的姓名\n"); return; } else { printf("name:%s\n", pcon->data[pos].name); printf("age:%d\n", pcon->data[pos].age); printf("sex:%s\n", pcon->data[pos].sex); printf("tele:%s\n", pcon->data[pos].tele); printf("addr:%s\n", pcon->data[pos].addr); }}void ModifyContact(pcon pcon){ char name[NAME_MAX] = { 0 }; int pos = 0; printf("请输入要修改的姓名\n"); scanf("%s", &name); pos = Find(pcon, name); if (pos == -1) { printf("找不到要修改的姓名\n"); return; } else { printf("please enter name\n"); scanf("%s", pcon->data[pos].name); printf("please enter age\n"); scanf("%d", &(pcon->data[pos].age)); printf("please enter sex\n"); scanf("%s", pcon->data[pos].sex); printf("please enter tele\n"); scanf("%s", pcon->data[pos].tele); printf("please enter addr\n"); scanf("%s", pcon->data[pos].addr); }}void Sort(pcon pcon){ int i = 0; int j = 0; for (i = 0; i < pcon->size - 1; i++) { for (j = 0; j < pcon->size - 1 - i; j++) { if (strcmp(pcon->data[j].name, pcon->data[j + 1].name)>0) { PerInfo tmp = { 0 }; tmp = pcon->data[j]; pcon->data[j] = pcon->data[j + 1]; pcon->data[j + 1] = tmp; } } }}void Clear(pcon pcon){ pcon->size = 0;}测试部分
text.c
#pragma warning(disable:4996)#include"contact.h"void menu(){ printf("***************************\n"); printf(" 1.Add 2.Del \n"); printf(" 3.Modify 4.Search\n"); printf(" 5.Display 6.Sort \n"); printf(" 7.Clear 0.Exit \n");} int main(){ Contact con; int input = 0; InitContact(&con); do { menu(); printf("请选择>:\n"); scanf("%d", &input); switch (input) { case 1: AddContact(&con); break; case 2: DelContact(&con); break; case 3: ModifyContact(&con); break; case 4: SearchContact(&con); break; case 5: DisplayContact(&con); break; case 6: Sort(&con); break; case 7: Clear(&con); break; case 0: break; default: break; } } while (input); return 0;}
转载地址:https://blog.csdn.net/audience_fzn/article/details/76832208 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月21日 03时27分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java 减少内存_java中减少内存占用小技巧
2019-04-21
centos 7 mysql图形界面_centos7-vnstat图形界面搭建
2019-04-21
java 防渗透_「java、工程师工作经验怎么写」-看准网
2019-04-21
java中跳出当前循环怎么做_在java中,如何跳出当前的多重循环?
2019-04-21
java16下载_java lombok下载
2019-04-21
python 图像处理与识别书籍_Python图像处理之识别图像中的文字(实例讲解)
2019-04-21
java安全初始化_java安全编码指南之:声明和初始化
2019-04-21
java jstat gc_分析JVM GC及内存情况的方法
2019-04-21
php linux权限,Linux权限详细介绍
2019-04-21
典型环节的matlab仿真分析,典型环节的MATLAB仿真.doc
2019-04-21
Php contenttype类型,各种类型文件的Content Type
2019-04-21
php使用redis持久化,redis如何持久化
2019-04-21
php7.1解压包安装,【Swoole】php7.1安装swoole扩展
2019-04-21
linux centos删除安装的包,CentOS yum认为已删除的软件包仍在安装中
2019-04-21
酒店管理系统c语言带注释,酒店管理系统--C语言版.pdf
2019-04-21
c语言 实现sizeof功能,C语言简单实现sizeof功能代码
2019-04-21