国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C語言】動(dòng)態(tài)通訊錄(超詳細(xì))

這篇具有很好參考價(jià)值的文章主要介紹了【C語言】動(dòng)態(tài)通訊錄(超詳細(xì))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

通訊錄是一個(gè)可以很好鍛煉我們對(duì)結(jié)構(gòu)體的使用,加深對(duì)結(jié)構(gòu)體的理解,在為以后學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)打下結(jié)實(shí)的基礎(chǔ)

這里我們想設(shè)計(jì)一個(gè)有添加聯(lián)系人,刪除聯(lián)系人,查找聯(lián)系人,修改聯(lián)系人,展示聯(lián)系人,排序這幾種功能的通訊錄


注意:我們按照三個(gè)區(qū)域劃分

【C語言】動(dòng)態(tài)通訊錄(超詳細(xì)),c語言,開發(fā)語言

上圖所示進(jìn)行區(qū)域劃分

  • con.c用來放實(shí)現(xiàn)功能的函數(shù)
  • con.h用來放頭文件的聲明
  • test.c用來放整體框架

整體框架:

使用do...while循環(huán)創(chuàng)建整體框架

整體框架在test.c中,這部分我們用來測試代碼

int main()
{
	int input = 0;
	InitContact(&Con);
	do
	{
		menu();
		printf("請(qǐng)輸入你的選項(xiàng)\n");
		scanf("%d", &input);
		switch (input)
		{
		case Add:
			break;
		case Del:
			break;
		case Search:
			break;
		case Modify:
			break;
		case Show:
			break;
		case Sort:
			break;
		case Exit:
			printf("你已成功退出\n");
			break;
		default:
			printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n");
			break;
		}
	} while (input);
	return 0;
}
注意
我在使用case語句時(shí)沒有用數(shù)字1,2,3…
而是使用了枚舉常量,因?yàn)槊杜e常量會(huì)更方便程序員查看與操作要與菜單的數(shù)字相匹配,不然就會(huì)弄巧成拙
enum option
{
	Exit,
	Add,
	Del,
	Search,
	Modify,
	Show,
	Sort,
};

菜單:

菜單的設(shè)計(jì)隨心所欲,但要與枚舉相匹配!

void menu()
{
	printf("**************************\n");
	printf("***   1.Add    2.Del    **\n");
	printf("***   3.Search 4.Modify **\n");
	printf("***   5.Show   6.Sort   **\n");
	printf("***   0.Exit            **\n");
	printf("**************************\n");
	printf("**************************\n");
}

創(chuàng)建通訊錄:

此部分我們?cè)?code>Contact.h中創(chuàng)建,在另外兩個(gè)里include就可以

創(chuàng)建通訊錄之前要先創(chuàng)建一個(gè)聯(lián)系人的結(jié)構(gòu)體:
假設(shè)我們的結(jié)構(gòu)體包含了一個(gè)人的姓名,年齡,性別,電話,住址
那么久可以很好的進(jìn)行創(chuàng)建:

typedef struct PeoInfo
{
	char name[NAME_MAX];
	int age;
	char sex[SEX_MAX];
	char tele[TELE_MAX];
	char addr[ADDR_MAX];
}PeoInfo;

其中的常量用define按需求進(jìn)行定義,避免牽一發(fā)而動(dòng)全身的情況

#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30

因?yàn)橐獎(jiǎng)討B(tài)通訊錄
故設(shè)計(jì)通訊錄時(shí)不能使用PeoInfo創(chuàng)建數(shù)組的方式進(jìn)行
可以創(chuàng)建結(jié)構(gòu)體指針,指向動(dòng)態(tài)內(nèi)存分配的空間

typedef struct Contact
{
	PeoInfo* Data;
	int sz;
	int capacity;
}Contact;

最后在test.c文件中創(chuàng)建通訊錄 Contact Con;

初始化:

con.c中進(jìn)行設(shè)計(jì),不要忘記在test.c中調(diào)用,在con.h中聲明
實(shí)現(xiàn)功能皆是如此設(shè)計(jì),將不在贅述

	void InitContact(Contact* pc)
{
	assert(pc);
	pc->sz = 0;
	pc->capacity = START;
	PeoInfo* p = (PeoInfo*)malloc(sizeof(PeoInfo) * START);
	//start為初始化大小,define定義為3
	if (p != NULL)
	{
		pc->Data = p;
	}
	else
	{
		perror("InitContact->malloc");
	}
}

實(shí)現(xiàn)功能:

添加聯(lián)系人:

void AddContact(Contact* pc)
{
	assert(pc);
	if (pc->sz == pc->capacity)
	{
		PeoInfo* str = (PeoInfo*)realloc
		(pc->Data, sizeof(PeoInfo) * 
		(pc->capacity + START_ADD));
		//START_ADD為define定義,為一次擴(kuò)容數(shù)量
		if (str != NULL)
		{
			pc->Data = str;
			pc->capacity = pc->capacity + START_ADD;
			printf("增容成功\n");
		}
		else
		{
			perror("AddContact->realloc");
			return;
		}
	}
	printf("輸入名字\n");
	scanf("%s", pc->Data[pc->sz].name);
	printf("輸入年齡\n");
	scanf("%d", &pc->Data[pc->sz].age);
	printf("輸入性別\n");
	scanf("%s", &pc->Data[pc->sz].sex);
	printf("輸入電話\n");
	scanf("%s", &pc->Data[pc->sz].tele);
	printf("輸入住址\n");
	scanf("%s", &pc->Data[pc->sz].addr);
	printf("輸入成功\n");
	pc->sz++;
}

刪除聯(lián)系人:

void DelContact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通訊錄為空,無需刪除\n");
		return;
	}
	char name[NAME_MAX];
	printf("輸入你要?jiǎng)h除人的姓名\n");
	scanf("%s", name);
	int ret = find(pc, name);
	//我們這里使用了find函數(shù)
	if (ret == -1)
	{
		printf("查無此人\n");
		return;
	}
	for (int i = ret; i < pc->sz-1; i++)
	{
		pc->Data[i] = pc->Data[i + 1];
	}
	pc->sz--;
}

我們?cè)谳斎氩檎倚彰笠M(jìn)行查找,因此我們?cè)O(shè)計(jì)了一個(gè)find函數(shù),方便別的函數(shù)的使用

find()的定義:

int find(Contact* pc, char name[])
{
	for (int i = 0; i < pc->sz; i++)
	{
		if (strcmp(name, pc->Data[i].name) == 0)
		{
			return i;
		}
	}
	return -1;
}

查找聯(lián)系人:

void SearchContact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通訊錄為空\n");
		return;
	}
	char name[NAME_MAX];
	printf("輸入你要查找人的姓名\n");
	scanf("%s", name);
	int ret = find(pc, name);
	if (ret == -1)
	{
		printf("查無此人\n");
		return;
	}
	printf(" % -20s % -5s % -5s % -20s % -20s\n", "姓名", "年齡", "性別", "電話", "住址");
	printf(" % -20s % -5d % -5s % -20s % -20s\n",
		pc->Data[ret].name, pc->Data[ret].age, pc->Data[ret].sex, pc->Data[ret].tele, pc->Data[ret].addr);
}

修改聯(lián)系人:

void ModifyContact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通訊錄為空\n");
		return;
	}
	char name[NAME_MAX];
	printf("輸入你要修改人的姓名\n");
	scanf("%s", name);
	int ret = find(pc, name);
	if (ret == -1)
	{
		printf("查無此人\n");
		return;
	}
	printf("輸入名字\n");
	scanf("%s", pc->Data[ret].name);
	printf("輸入年齡\n");
	scanf("%d", &pc->Data[ret].age);
	printf("輸入性別\n");
	scanf("%s", &pc->Data[ret].sex);
	printf("輸入電話\n");
	scanf("%s", &pc->Data[ret].tele);
	printf("輸入住址\n");
	scanf("%s", &pc->Data[ret].addr);
	printf("輸入成功\n");
}

展示聯(lián)系人:

void ShowContact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通訊錄為空,無需打印\n");
		return;
	}
	printf(" % -20s % -5s % -5s % -20s % -20s\n", "姓名", "年齡", "性別", "電話", "住址");
	for (int i = 0; i < pc->sz; i++)
	{
		printf(" % -20s % -5d % -5s % -20s % -20s\n",
			pc->Data[i].name, pc->Data[i].age, pc->Data[i].sex, pc->Data[i].tele, pc->Data[i].addr);
	}
}

排序:

排序可以按照名字排,或是年齡,亦或是性別等等
這里我們只進(jìn)行名字的排序,使用方法大同小異(快排)

int cmp_name(void* e1,void* e2)
{
	return strcmp(((PeoInfo*)e1)->name, ((PeoInfo*)e2)->name);
}
void SortContact(Contact* pc)
{
	qsort(pc->Data, pc->sz, sizeof(PeoInfo), cmp_name);
}

free空間:

最后一步就是釋放空間有始有終

void DestoryContact(Contact* pc)
{
	free(pc->Data);
	pc->Data=NULL;
	pc->sz=0;
	pc->capacity=0;
}

源代碼:

con.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"

int find(Contact* pc, char name[])
{
	for (int i = 0; i < pc->sz; i++)
	{
		if (strcmp(name, pc->Data[i].name) == 0)
		{
			return i;
		}
	}
	return -1;
}


//void InitContact(Contact* pc)
//{
//	assert(pc);
//	pc->sz = 0;
//	memset(pc->Data, 0, sizeof(pc->Data));
//}
void InitContact(Contact* pc)
{
	assert(pc);
	pc->sz = 0;
	pc->capacity = START;
	PeoInfo* p = (PeoInfo*)malloc(sizeof(PeoInfo) * START);
	if (p != NULL)
	{
		pc->Data = p;
	}
	else
	{
		perror("InitContact->malloc");
	}
}

void DestoryContact(Contact* pc)
{
	free(pc);
}


void AddContact(Contact* pc)
{
	assert(pc);
	if (pc->sz == pc->capacity)
	{
		PeoInfo* str = (PeoInfo*)realloc(pc->Data, sizeof(PeoInfo) * (pc->capacity + START_ADD));
		if (str != NULL)
		{
			pc->Data = str;
			pc->capacity = pc->capacity + 2;
			printf("增容成功\n");
		}
		else
		{
			perror("AddContact->realloc");
			return;
		}
	}
	printf("輸入名字\n");
	scanf("%s", pc->Data[pc->sz].name);
	printf("輸入年齡\n");
	scanf("%d", &pc->Data[pc->sz].age);
	printf("輸入性別\n");
	scanf("%s", &pc->Data[pc->sz].sex);
	printf("輸入電話\n");
	scanf("%s", &pc->Data[pc->sz].tele);
	printf("輸入住址\n");
	scanf("%s", &pc->Data[pc->sz].addr);
	printf("輸入成功\n");
	pc->sz++;
}

void ShowContact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通訊錄為空,無需打印\n");
		return;
	}
	printf(" % -20s % -5s % -5s % -20s % -20s\n", "姓名", "年齡", "性別", "電話", "住址");
	for (int i = 0; i < pc->sz; i++)
	{
		printf(" % -20s % -5d % -5s % -20s % -20s\n",
			pc->Data[i].name, pc->Data[i].age, pc->Data[i].sex, pc->Data[i].tele, pc->Data[i].addr);
	}
}

void DelContact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通訊錄為空,無需刪除\n");
		return;
	}
	char name[NAME_MAX];
	printf("輸入你要?jiǎng)h除人的姓名\n");
	scanf("%s", name);
	int ret = find(pc, name);
	if (ret == -1)
	{
		printf("查無此人\n");
		return;
	}
	for (int i = ret; i < pc->sz-1; i++)
	{
		pc->Data[i] = pc->Data[i + 1];
	}
	pc->sz--;
}

void SearchContact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通訊錄為空\n");
		return;
	}
	char name[NAME_MAX];
	printf("輸入你要查找人的姓名\n");
	scanf("%s", name);
	int ret = find(pc, name);
	if (ret == -1)
	{
		printf("查無此人\n");
		return;
	}
	printf(" % -20s % -5s % -5s % -20s % -20s\n", "姓名", "年齡", "性別", "電話", "住址");
	printf(" % -20s % -5d % -5s % -20s % -20s\n",
		pc->Data[ret].name, pc->Data[ret].age, pc->Data[ret].sex, pc->Data[ret].tele, pc->Data[ret].addr);
}

void ModifyContact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通訊錄為空\n");
		return;
	}
	char name[NAME_MAX];
	printf("輸入你要修改人的姓名\n");
	scanf("%s", name);
	int ret = find(pc, name);
	if (ret == -1)
	{
		printf("查無此人\n");
		return;
	}
	printf("輸入名字\n");
	scanf("%s", pc->Data[ret].name);
	printf("輸入年齡\n");
	scanf("%d", &pc->Data[ret].age);
	printf("輸入性別\n");
	scanf("%s", &pc->Data[ret].sex);
	printf("輸入電話\n");
	scanf("%s", &pc->Data[ret].tele);
	printf("輸入住址\n");
	scanf("%s", &pc->Data[ret].addr);
	printf("輸入成功\n");
}

int cmp_name(void* e1,void* e2)
{
	return strcmp(((PeoInfo*)e1)->name, ((PeoInfo*)e2)->name);
}
void SortContact(Contact* pc)
{
	qsort(pc->Data, pc->sz, sizeof(PeoInfo), cmp_name);
}

con.h

#pragma once
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>

#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30

#define START 3
#define START_ADD 2

typedef struct PeoInfo
{
	char name[NAME_MAX];
	int age;
	char sex[SEX_MAX];
	char tele[TELE_MAX];
	char addr[ADDR_MAX];
}PeoInfo;


typedef struct Contact
{
	PeoInfo* Data;
	int sz;
	int capacity;
}Contact;

//init
void InitContact(Contact* pc);

//add
void AddContact(Contact* pc);

//show
void ShowContact(Contact* pc);

//del
void DelContact(Contact* pc);

//search
void SearchContact(Contact* pc);

//modify
void ModifyContact(Contact* pc);

//sort
void SortContact(Contact* pc);

//destory
void DestoryContact(Contact* pc);

test.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"

enum option
{
	Exit,
	Add,
	Del,
	Search,
	Modify,
	Show,
	Sort,
};


void menu()
{
	printf("**************************\n");
	printf("***   1.Add    2.Del    **\n");
	printf("***   3.Search 4.Modify **\n");
	printf("***   5.Show   6.Sort   **\n");
	printf("***   0.Exit            **\n");
	printf("**************************\n");
	printf("**************************\n");
}
int main()
{
	int input = 0;
	Contact Con;
	InitContact(&Con);
	do
	{
		menu();
		printf("請(qǐng)輸入你的選項(xiàng)\n");
		scanf("%d", &input);
		switch (input)
		{
		case Add:
			AddContact(&Con);
			break;
		case Del:
			DelContact(&Con);
			break;
		case Search:
			SearchContact(&Con);
			break;
		case Modify:
			ModifyContact(&Con);
			break;
		case Show:
			ShowContact(&Con);
			break;
		case Sort:
			SortContact(&Con);
			break;
		case Exit:
			DestoryContact(&Con);
			printf("你已成功退出\n");
			break;
		default:
			printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n");
			break;

		}
	} while (input);
	return 0;
}

歡迎糾錯(cuò)與討論文章來源地址http://www.zghlxwxcb.cn/news/detail-721049.html

到了這里,關(guān)于【C語言】動(dòng)態(tài)通訊錄(超詳細(xì))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 動(dòng)態(tài)通訊錄實(shí)現(xiàn)(C語言)

    動(dòng)態(tài)通訊錄實(shí)現(xiàn)(C語言)

    目錄 前言: 一:單個(gè)節(jié)點(diǎn)的設(shè)計(jì)和主邏輯? 結(jié)點(diǎn)設(shè)計(jì) 主邏輯 二:接口實(shí)現(xiàn) (1)生成一個(gè)新的結(jié)點(diǎn) (2)增加信息 (3)打印信息 (4)查找? (5)刪除信息 (6)修改信息 (7)排序 ?插入排序 快速排序 (8)已有數(shù)據(jù)讀取 (9)更新數(shù)據(jù)錄入 三:全部代碼 contact.h(聲明) contact.c(接口) test.c(主邏輯) 本

    2024年02月05日
    瀏覽(96)
  • 【C語言】實(shí)現(xiàn)動(dòng)態(tài)版通訊錄

    【C語言】實(shí)現(xiàn)動(dòng)態(tài)版通訊錄

    ??內(nèi)容專欄:【C語言】進(jìn)階部分 ??本文概括: 結(jié)合自定義類型、動(dòng)態(tài)內(nèi)存管理知識(shí),對(duì)靜態(tài)版本的通訊錄進(jìn)行優(yōu)化。 ??本文作者:花 碟 ??發(fā)布時(shí)間:2023.4.2 ? 目錄 前言: 一、靜態(tài)版本代碼實(shí)現(xiàn): 二、動(dòng)態(tài)通訊錄? 三、代碼整理? 前面我們學(xué)過了結(jié)構(gòu)體、枚舉等自定義

    2024年02月02日
    瀏覽(96)
  • 【C語言】實(shí)現(xiàn)通訊錄(動(dòng)態(tài)+文件)

    【C語言】實(shí)現(xiàn)通訊錄(動(dòng)態(tài)+文件)

    在之前三子棋和掃雷的基礎(chǔ)上,本篇文章博主將給大家逐步分析實(shí)現(xiàn)通訊錄,介紹通訊錄的每個(gè)功能( 動(dòng)態(tài)增長和文件保存 )。 —————————————————————— test.c - 測試通訊錄 Contact.c - 函數(shù)的實(shí)現(xiàn) Contact.h - 函數(shù)和類型的聲明 以多文件的形式分模塊寫的

    2024年02月13日
    瀏覽(78)
  • C語言實(shí)現(xiàn)通訊錄--動(dòng)態(tài)版

    C語言實(shí)現(xiàn)通訊錄--動(dòng)態(tài)版

    實(shí)現(xiàn)一個(gè)通訊錄,聯(lián)系人的數(shù)量可多可少 1.在靜態(tài)版本的基礎(chǔ)上改用動(dòng)態(tài)的方法: (1)默認(rèn)能夠存放三個(gè)人的信息 (2)不夠的話,每次增加兩個(gè)人的信息 2.其他功能不變 建立三個(gè)文件: test.c 用于測試通訊錄的相關(guān)功能 contsct.c 通訊錄的實(shí)現(xiàn)模塊(用函數(shù)實(shí)現(xiàn)功能) conta

    2024年02月15日
    瀏覽(99)
  • C語言實(shí)踐——通訊錄(2)(動(dòng)態(tài)版)

    首先感謝上一篇博客的大佬們的點(diǎn)贊,非常感謝?。?! 目錄 前言 ?一、需要添加的功能 1. 初始化——?jiǎng)討B(tài)內(nèi)存開辟 2.添加聯(lián)系人——通訊錄擴(kuò)容 3.退出通訊錄——通訊錄銷毀 二、具體操作 1.鋪墊 2.修改初始化函數(shù) 3.修改添加函數(shù)? 4.退出通訊錄,新增銷毀函數(shù) 上一篇文章我

    2023年04月08日
    瀏覽(34)
  • C語言動(dòng)態(tài)內(nèi)存練習(xí):【通訊錄(動(dòng)態(tài)內(nèi)存版本)實(shí)現(xiàn)】

    前面我們寫了一個(gè)靜態(tài)數(shù)組版本的通訊錄,再結(jié)合剛學(xué)習(xí)的動(dòng)態(tài)內(nèi)存管理的知識(shí),我們現(xiàn)在來實(shí)現(xiàn)一個(gè)動(dòng)態(tài)內(nèi)存版本的通訊錄。 動(dòng)態(tài)內(nèi)存版本的通訊錄,主要還是為了解決靜態(tài)數(shù)組版本的通訊錄空間太大導(dǎo)致的內(nèi)存浪費(fèi)和空間太小不夠存放的問題。 擴(kuò)容策略: 為通訊錄設(shè)置

    2023年04月13日
    瀏覽(35)
  • 【C語言】通訊錄2.0 (動(dòng)態(tài)增長版)

    【C語言】通訊錄2.0 (動(dòng)態(tài)增長版)

    通訊錄是一種記錄聯(lián)系人信息的工具,包括姓名、電話號(hào)碼、電子郵件地址、住址等。 文章的一二三章均于上一篇相同,可以直接看第四章改造內(nèi)容。 此通訊錄是 基于通訊錄1.0(靜態(tài)版)的基礎(chǔ)上進(jìn)行改進(jìn) ,請(qǐng)先看系列文章第一篇,再看本篇博客。 ****** 有需要源代碼,見

    2024年02月14日
    瀏覽(22)
  • 【C語言實(shí)戰(zhàn)項(xiàng)目】通訊錄(動(dòng)態(tài)增容版)

    【C語言實(shí)戰(zhàn)項(xiàng)目】通訊錄(動(dòng)態(tài)增容版)

    ?? 個(gè)人主頁 :修修修也 ?? 所屬專欄 :數(shù)據(jù)結(jié)構(gòu) ?? 操作環(huán)境 : Visual Studio 2022 目錄 一.動(dòng)態(tài)增容版簡介 二.動(dòng)態(tài)增容版逐步實(shí)現(xiàn)詳解 1.創(chuàng)建通訊錄 2. 初始化通訊錄 3.增加聯(lián)系人 4.通訊錄增容 5.銷毀通訊錄 三.動(dòng)態(tài)增容版代碼整合 contact.c test.c contact.h 上篇博客我們一起用C語言

    2024年02月11日
    瀏覽(20)
  • 【C語言】——通訊錄(靜態(tài)-動(dòng)態(tài)增長-文件儲(chǔ)存)

    【C語言】——通訊錄(靜態(tài)-動(dòng)態(tài)增長-文件儲(chǔ)存)

    ? 目錄 前言: 一:整體框架 關(guān)于通訊錄結(jié)構(gòu)體的創(chuàng)建? 二:通訊錄的功能實(shí)現(xiàn)(靜態(tài)) 2.1初始化通訊錄 2.2增加聯(lián)系人 2.3打印通訊錄 2.4刪除聯(lián)系人 ?2.5?查找聯(lián)系人 2.6修改聯(lián)系人? 2.7排序聯(lián)系人 三:通訊錄優(yōu)化——?jiǎng)討B(tài)內(nèi)存 ?3.1通訊錄的創(chuàng)建 3.2初始化通訊錄? 3.3增加聯(lián)系

    2024年02月07日
    瀏覽(20)
  • 動(dòng)態(tài)通訊錄——C語言【詳解+全部碼源】

    動(dòng)態(tài)通訊錄——C語言【詳解+全部碼源】

    作者簡介: 辭七七,目前大一,正在學(xué)習(xí)C/C++,Java,Python等 作者主頁: 七七的個(gè)人主頁 文章收錄專欄: 進(jìn)階C語言,本專欄主要講解數(shù)據(jù)存儲(chǔ),進(jìn)階指針,動(dòng)態(tài)內(nèi)存管理,文件操作,程序環(huán)境和預(yù)處理等 歡迎大家點(diǎn)贊 ?? 收藏 ? 加關(guān)注哦!???? 我們之前以及寫過靜態(tài)版

    2023年04月21日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包