真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C語言|實(shí)現(xiàn)通訊錄功能增刪改查(動態(tài)開辟內(nèi)存)-創(chuàng)新互聯(lián)

實(shí)現(xiàn)一個通訊錄的功能:

創(chuàng)新互聯(lián)長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為崇義企業(yè)提供專業(yè)的做網(wǎng)站、網(wǎng)站設(shè)計(jì),崇義網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
  • 增加聯(lián)系人
  • 刪除聯(lián)系人
  • 修改聯(lián)系人信息
  • 查詢聯(lián)系人信息
  • 打印聯(lián)系人信息
  • 退出清除內(nèi)存空間

分為三部分實(shí)現(xiàn):

contact.h里面的代碼如下:

#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#define max_name 20
#define max_sex 10
#define max_addr 30
#define max_tele 30
#define max 1000
#define Default 5
#include#include#include//創(chuàng)建結(jié)構(gòu)體,通訊錄
typedef struct teleInfo {
	char name[max_name];
	char sex[max_sex];
	int age;
	char tele[max_tele];
	char addr[max_addr];
}teleInfo;

//創(chuàng)建1000個人的通訊錄
//typedef struct contact {
//	teleInfo data[max];
//	//當(dāng)前通訊錄的個數(shù)
//	int sz;
//}contact;

//創(chuàng)建動態(tài)內(nèi)存的通訊錄
typedef struct contact {
	teleInfo *data;
	//當(dāng)前通訊錄的個數(shù)
	int sz;
	//大的內(nèi)存容量
	int capacity;
}contact;

//初始化通訊錄
void initContact(contact *c);

//檢查內(nèi)存
void checkCapacity(contact* c);

//添加聯(lián)系人
void addContact(contact *c);

//刪除聯(lián)系人
void delContact(contact* c);

//更新聯(lián)系人信息
void updateContact(contact* c);

//查詢聯(lián)系人信息
void searchContact(contact* c);

//排序聯(lián)系人
void sortContact(contact* c);

//打印通訊錄
void printContact(contact* c);

//銷毀
void destoryContact(contact* c);

contact.c里面的代碼如下:

#include "contact.h"
//初始化通訊錄
void initContact(contact* c) {
	c->data = (teleInfo*)malloc(Default * sizeof(teleInfo));
	if (c->data == NULL) {
		perror("initContact");
		return;

	}
	c->sz = 0;
	c->capacity = Default;
}

//檢查內(nèi)存
void checkCapacity(contact* c) {
	if (c->sz == c->capacity) {
		teleInfo* ptr = (teleInfo*)realloc(c->data, (c->capacity + Default)*sizeof(teleInfo));
		if (ptr != NULL) {
			c->data = ptr;
			c->capacity += Default;
			printf("增容成功\n");
		}
		else {
			perror("checkCapacity");
			printf("添加聯(lián)系人失敗\n");
			return;
		}


	}
	
}

//添加聯(lián)系人
void addContact(contact* c) {
	//判斷是否內(nèi)存足夠
	checkCapacity(c);
	//添加
	printf("請輸入姓名:");
	scanf("%s", c->data[c->sz].name);
	printf("請輸入性別:");
	scanf("%s", c->data[c->sz].sex);
	printf("請輸入年齡:");
	scanf("%d", &(c->data[c->sz].age));
	printf("請輸入電話號碼:");
	scanf("%s", c->data[c->sz].tele);
	printf("請輸入地址:");
	scanf("%s", c->data[c->sz].addr);

	c->sz++;
	printf("添加成功\n");
}

//查找
static int findbyName(contact* c,char name[]) {
	int i = 0;
	for (i = 0; i< c->sz; i++)
	{
		if (strcmp(c->data[i].name,name)==0) {
			//找到了
			return i;
		}
	}
	return -1;

}
//刪除聯(lián)系人
void delContact(contact* c) {
	char name[max_name] = {0};
	printf("請輸入你要刪除的聯(lián)系人的姓名:");
	scanf("%s", name);
	//根據(jù)姓名查找到該聯(lián)系人
	int ret=findbyName(c,name);

	if (ret == -1) {
		printf("找不到該聯(lián)系人\n");
		return;
	}
	else {
		//找到后刪除
		int i = 0;
		for (i = ret; i< c->sz - 1; i++) {
			c->data[i] = c->data[i + 1];
		}
		c->sz--;
		printf("刪除成功\n");
	}

}

//更新聯(lián)系人信息
void updateContact(contact* c) {
	char name[max_name] = {0};
	printf("請輸入你要修改的聯(lián)系人的姓名:");
	scanf("%s", name);
	//根據(jù)姓名查找到該聯(lián)系人
	int ret = findbyName(c, name);

	if (ret == -1) {
		printf("找不到該聯(lián)系人\n");
		return;
	}
	else {
		printf("請輸入姓名:");
		scanf("%s", c->data[ret].name);
		printf("請輸入年齡:");
		scanf("%d", &(c->data[ret].age));
		printf("請輸入性別:");
		scanf("%s", c->data[ret].sex);
		printf("請輸入電話號碼:");
		scanf("%s", c->data[ret].tele);
		printf("請輸入地址:");
		scanf("%s", c->data[ret].addr);

		printf("修改成功");
	}
}
//查詢聯(lián)系人信息
void searchContact(contact* c) {
	char name[max_name] = { 0 };
	printf("請輸入你要查詢的聯(lián)系人的姓名:");
	scanf("%s", name);
	//根據(jù)姓名查找到該聯(lián)系人
	int ret = findbyName(c, name);
	if (ret == -1) {
		printf("該聯(lián)系人不存在\n");
		return;
	}
	else {
		printf("%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t\n", "姓名", "年齡", "性別", "電話號碼", "地址");
		printf("%-10s\t%-10d\t%-10s\t%-10s\t%-10s\t\n", c->data[ret].name, c->data[ret].age, c->data[ret].sex, c->data[ret].tele, c->data[ret].addr);
	}
}

//排序聯(lián)系人(根據(jù)年齡來排序)
void sortContact(contact* c) {
	
}

//打印通訊錄
void printContact(contact* c) {
	printf("%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t\n", "姓名", "年齡", "性別", "電話號碼", "地址");
	int i = 0;
	if (c->sz == 0) {
		printf("通訊錄為空\n");
		return;
	}
	else {
		for (i = 0; i< c->sz; i++) {
			printf("%-10s\t%-10d\t%-10s\t%-10s\t%-10s\t\n", c->data[i].name, c->data[i].age, c->data[i].sex, c->data[i].tele, c->data[i].addr);
		}
	}
	
}

//銷毀
void destoryContact(contact* c) {
	free(c->data);
	c->data = NULL;
	c->sz = 0;
	c->capacity = 0;
}

test.c里面的代碼如下:

#include "contact.h"
#include//實(shí)現(xiàn)通訊錄的添加,刪除,修改,查詢,排序,退出
void menu() {
	printf("--------請選擇你要操作的功能:--------\n");
	printf("----1.add--------2.del----------------\n");
	printf("----3.update-----4.search-------------\n");
	printf("----5.sort-------0.exit---------------\n");
	printf("----------6.print----------------\n");
}

enum Option
{
	EXIT,
	ADD,
	DEL,
	UPDATE,
	SEARCH,
	SORT,
	PRINT
};
int main() {
	int input=0;
	contact c;
	//初始化通訊錄
	initContact(&c);
		
	do
	{
		menu();
		printf("請選擇:》");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			addContact(&c);
			break;
		case DEL:
			delContact(&c);
			break;
		case UPDATE:
			updateContact(&c);
			break;
		case SEARCH:
			searchContact(&c);
			break;
		case SORT:
			sortContact(&c);
			break;
		case PRINT:
			printContact(&c);
			break;
		case EXIT:
			destoryContact(&c);
			printf("退出成功\n");
			break;
		default:
			printf("選擇失敗\n");
			break;
		}

	} while (input);
	return 0;
}

里面有排序的功能,還未實(shí)現(xiàn),不過可以根據(jù)你的要求來進(jìn)行排序,比如:年齡,排序有很多種方法,比如:冒泡排序.......

大家可以嘗試一下,有任何疑問,可以在評論區(qū)留言,看到后會解答。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


名稱欄目:C語言|實(shí)現(xiàn)通訊錄功能增刪改查(動態(tài)開辟內(nèi)存)-創(chuàng)新互聯(lián)
瀏覽地址:http://weahome.cn/article/cedsgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部