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

C/C++之分文件寫靜態(tài)通訊錄詳解(保姆級教學(xué))

這篇具有很好參考價值的文章主要介紹了C/C++之分文件寫靜態(tài)通訊錄詳解(保姆級教學(xué))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

個人主頁:點我進入主頁

專欄分類:C語言初階? ? ??C語言程序設(shè)計————KTV? ? ? ?C語言小游戲? ? ?C語言進階

C語言刷題

歡迎大家點贊,評論,收藏。

一起努力,一起奔赴大廠。

目錄

1. 前言

2.主函數(shù)

3.增加函數(shù)?

?4.位置查找函數(shù)

5.刪除函數(shù)?

6.查找函數(shù)?

7. 修改函數(shù)

8.排序函數(shù)?

?9.頭文件的展示


1. 前言

? ? ? ? ?在前面我們學(xué)習(xí)了自定義類型,其中包括結(jié)構(gòu)體,位段,枚舉,聯(lián)合體,其中最有意思的是他們的內(nèi)存對齊,想要學(xué)習(xí)的小伙伴們可以點擊https://blog.csdn.net/Infernal_Puppet/article/details/133720624

進行學(xué)習(xí),今天我們就來實現(xiàn)一下通訊錄,后期我們還會講動態(tài)通訊錄,利用文件存儲通訊錄信息。通訊錄包括?通訊錄的增刪查改排序,接下來讓我們感受一下通訊錄的實現(xiàn)把。

2.主函數(shù)

enum nums {
	退出,
	增加,
	查找,
	刪除,
	修改,
	排序
};
void menu()
{
	printf("*************************\n");
	printf("***  1.增加   2.查找  ***\n");
	printf("***  3.刪除   4.修改  ***\n");
	printf("***  5.排序   0.退出  ***\n");
	printf("*************************\n");
}
void init_adderstbook(Struct *pc)
{
	memset(pc->arr, 0, sizeof(pc->arr));
	pc->i = 0;
}
void print(Struct* pc)
{
	int i;
	printf("%-20s%-15s%-3s\n", "姓名", "電話", "年齡");
	for (i = 0; i <pc->i; i++)
	{
		printf("%-20s%-15s%-3d\n", pc->arr [i].name , pc->arr[i].phone , pc->arr[i].age );
	}
}
int main()
{
	Struct s;
	init_adderstbook(&s);
	while(1)
	{
		menu();
		int num;
		printf("請輸入你想選擇的序號:");
		scanf("%d", &num);
		int ret;
		switch (num)
		{
			case 增加:
				add(&s);
				print(&s);
				break;
			case 查找:
				finds(&s);
				break;
			case 刪除:
				del(&s);
				print(&s);
				break;
			case 修改:
				mod(&s);
				print(&s);
				break;
			case 排序:
				qsort(s.arr, s.i, sizeof(s.arr[0]), mysort);
				print(&s);
				break;
			case 退出:
				return 0;
		}

	}

	return 0;
}

????????這里面包括菜單函數(shù),打印函數(shù),結(jié)構(gòu)體的初始化,還有一個枚舉的定義,枚舉主要用于switch case語句,由于我們要寫的函數(shù)較多,容易忘記函數(shù)是什么,順序是什么,我們就可以利用枚舉進行定義。

3.增加函數(shù)?

void add(Struct *pc)
{
	assert(pc);
	if (pc->i + 1 == Max_Size)
	{
		printf("通訊錄滿了\n");
		return;
	}
	printf("請輸入聯(lián)系人的姓名:");
	scanf("%s", pc->arr[pc->i].name);
	printf("請輸入聯(lián)系人的電話;");
	scanf("%s", pc->arr[pc->i].phone);
	printf("請輸入聯(lián)系人的年齡:");
	scanf("%d", &pc->arr[pc->i].age);
	pc->i++;
}

? ? ? ? 由于我們要傳結(jié)構(gòu)體,分為傳值和傳址,我們利用傳址進行函數(shù)的傳參,主要原因是這樣更高效,由于是指針,我們用assert判斷是不是空指針,再判斷通訊錄是不是滿了,然后進行數(shù)據(jù)的輸入。

?4.位置查找函數(shù)

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

? ? ? ? 在這里我們創(chuàng)建了一個位置查找函數(shù),這個函數(shù)主要是用于查找到name的位置,如果沒有找到返回-1,找到返回所在的位置,這個函數(shù)主要用于刪除函數(shù)和查找函數(shù)以及修改函數(shù)。

5.刪除函數(shù)?

void del(Struct* pc)
{
	assert(pc);
	char name[50];
	printf("請輸入你想刪除人的名字\n");
	scanf("%s", name);
	int ret = find(pc, name);
	int i;
	if (ret != -1)
	{
		for (i = ret; i < pc->i; i++)
		{
			pc->arr[i] = pc->arr[i + 1];
		}
		pc->i--;
	}
}

? ? ? ? ?同樣我們先判斷是不是指針是不是空指針,然后進行想要查找的名字,利用find函數(shù)找到這個名字的位置,如果不是-1進行刪除操作,也就是從這個位置開始,進行覆蓋操作(前一個等于后一個直到結(jié)束),通訊錄的人數(shù)減少一個,

6.查找函數(shù)?

void finds(Struct* pc)
{
	assert(pc);
	char name[50];
	scanf("%s", name);
	int ret = find(pc, name);
	if (ret != -1)
	{
		printf("%-20s%-15s%-3s\n", "姓名", "電話", "年齡");
		printf("%-20s%-15s%-3d\n", pc->arr[ret].name, pc->arr[ret].phone, pc->arr[ret].age);
	}
	else
		printf("沒找到\n");
}

? ? ? ? 先進行指針是不是空的判斷,輸入要查找的人的名字,利用find函數(shù)進行查找,如果有進行打印,沒有則打印沒有找到。

7. 修改函數(shù)

void mod(Struct* pc)
{
	assert(pc);
	char name[50];
	printf("請輸入你想修改的名字:");
	scanf("%s", name);
	int ret = find(pc, name);
	if (ret != -1)
	{
		printf("請輸入你修改后的信息\n");
		printf("請輸入聯(lián)系人的姓名:");
		scanf("%s", pc->arr[ret].name);
		printf("請輸入聯(lián)系人的電話;");
		scanf("%s", pc->arr[ret].phone);
		printf("請輸入聯(lián)系人的年齡:");
		scanf("%d", &pc->arr[ret].age);
	}
	else
		printf("沒有此人\n");
}

? ? ? ? 先進行指針是不是空的判斷,輸入想要修改的人的名字,利用find函數(shù)進行查找,找到后對其進行修改,沒有找到則返回沒找到。

8.排序函數(shù)?

? ? ? ? 在這個函數(shù)中我們用到了qsort函數(shù),qsort函數(shù)的參數(shù)是要排序的數(shù)組,排序幾個元素,每個元素占幾個字節(jié),排序方式函數(shù),想要學(xué)習(xí)的可點擊qsort函數(shù)詳細講解以及利用冒泡排序模擬實現(xiàn)qsort函數(shù)-CSDN博客,進行查看。

?9.頭文件的展示

? ? ? ? 由于我們是分文件寫的,分為主函數(shù)文件,函數(shù)文件,函數(shù)聲明文件,其中函數(shù)文件和主函數(shù)文件是.c文件,函數(shù)聲明文件是.h文件,具體代碼如下:

#pragma once
#define Max_Size 50
#include <stdio.h>
#include <assert.h>
#include <string.h>

struct  xinxi {
	char name[50];
	char phone[13];
	int age;
};
typedef struct  adderstbook {
	struct xinxi arr[Max_Size];
	int i;
}Struct;
void add (Struct *pc);
int find(Struct* pc,char name[]);
void del(Struct* pc);
void finds(Struct* pc);
void mod(Struct* pc);
int mysort(const void* e1, const void* e2);

????????今天的內(nèi)容就結(jié)束了,歡迎大家來三連;文章來源地址http://www.zghlxwxcb.cn/news/detail-723487.html

到了這里,關(guān)于C/C++之分文件寫靜態(tài)通訊錄詳解(保姆級教學(xué))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

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

    ? 目錄 前言: 一:整體框架 關(guān)于通訊錄結(jié)構(gòu)體的創(chuàng)建? 二:通訊錄的功能實現(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)化——動態(tài)內(nèi)存 ?3.1通訊錄的創(chuàng)建 3.2初始化通訊錄? 3.3增加聯(lián)系

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

    靜態(tài)版通訊錄——C語言【詳解+全部碼源】

    前言: 我們用C語言實現(xiàn)一個可以存放100個人信息的通訊錄 每個人的信息包括: 姓名、性別、年齡、住址、電話 通訊錄的功能包括: 增加聯(lián)系人 刪除指定聯(lián)系人 查找指定聯(lián)系人 修改指定聯(lián)系人 顯示聯(lián)系人信息 排序聯(lián)系人(按照年齡/名字) 與我們之前的掃雷和三子棋項目

    2023年04月20日
    瀏覽(26)
  • C語言之通訊錄的實現(xiàn)(靜態(tài)版,動態(tài)版,文件版)

    C語言之通訊錄的實現(xiàn)(靜態(tài)版,動態(tài)版,文件版)

    個人主頁(找往期文章包括但不限于本期文章中不懂的知識點):?我要學(xué)編程(?_?)-CSDN博客 目錄 靜態(tài)通訊錄的實現(xiàn)邏輯? test.c:通訊錄的邏輯實現(xiàn) Contact.h:函數(shù)的聲明與頭文件的包含 Contact.c:函數(shù)的實現(xiàn)? 通訊錄源碼:? test.c: Contact.c: Contect.h: 動態(tài)版通訊錄? test.c: Co

    2024年04月13日
    瀏覽(57)
  • 通訊錄的實現(xiàn)(靜態(tài)版本,動態(tài)版本,文件版本)(后附完整源代碼)

    通訊錄的實現(xiàn)(靜態(tài)版本,動態(tài)版本,文件版本)(后附完整源代碼)

    對于通訊錄來說,我們需要它實現(xiàn)以下幾個功能。 1.人的信息:姓名+年齡+性別+電話+地址。 2.可以存放100個人的信息。 功能: 1增加聯(lián)系人。 2刪除聯(lián)系人。 3查找指定聯(lián)系人信息。 4修改指定聯(lián)系人信息。 5顯示所有聯(lián)系人信息。 6按名字排序。 接下來分為三個模塊,test.c

    2024年01月19日
    瀏覽(21)
  • 【C語言】通訊錄(文件) -- 詳解

    【C語言】通訊錄(文件) -- 詳解

    前面介紹了 【C語言】靜態(tài)通訊錄 -- 詳解_炫酷的伊莉娜的博客-CSDN博客 和 【C語言】動態(tài)通訊錄 -- 詳解_炫酷的伊莉娜的博客-CSDN博客 。當(dāng)通訊錄運行起來時,可以對通訊錄中的數(shù)據(jù)進行增加、刪除或修改等。此時數(shù)據(jù)是存放在內(nèi)存中,當(dāng)程序退出時,通訊錄中的數(shù)據(jù)自然就

    2024年02月12日
    瀏覽(20)
  • C語言——通訊錄詳解(文件版)

    C語言——通訊錄詳解(文件版)

    我們已經(jīng)掌握了通訊錄的靜態(tài)版和動態(tài)版,下面我們將學(xué)習(xí)通訊錄的文件版。學(xué)習(xí)了文件版,我們就不用擔(dān)心退出程序后,已經(jīng)添加的聯(lián)系人清空了。在以前的通訊錄(通訊錄靜態(tài)版、通訊錄動態(tài)版)基礎(chǔ)上,我們在完成兩個目標就可以實現(xiàn)通訊錄文件版。 目標: 通訊錄退

    2024年02月09日
    瀏覽(23)
  • 【c語言】通訊錄(靜態(tài))

    【c語言】通訊錄(靜態(tài))

    小張剛學(xué)習(xí)完結(jié)構(gòu)體,枚舉,聯(lián)合相關(guān)的知識,實踐實踐,寫一個通訊錄唄! 通訊錄的功能 1.通訊錄可存放100的信息 2.信息的內(nèi)容姓名,性別,年齡,電話,地址 3.支持增加聯(lián)系人 4.支持刪除聯(lián)系人 5.支持查找聯(lián)系人 6.支持修改聯(lián)系人 7.支持排序聯(lián)系人 8.打印數(shù)據(jù) 文件類型

    2024年02月13日
    瀏覽(106)
  • C語言---認識動態(tài)內(nèi)存管理并實現(xiàn)一個動態(tài)通訊錄:靜態(tài)通訊錄別來沾邊

    C語言---認識動態(tài)內(nèi)存管理并實現(xiàn)一個動態(tài)通訊錄:靜態(tài)通訊錄別來沾邊

    ??個人主頁:@小沈熬夜禿頭中???? ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C語言學(xué)習(xí) ??本章內(nèi)容:動態(tài)內(nèi)存管理 送給各位??:當(dāng)你的能力還駕馭不了你的目標時那你就應(yīng)該沉下心來歷練 記得 評論?? +點贊?? +收藏?? +關(guān)注??哦~ 提示:以下是本篇

    2024年02月08日
    瀏覽(171)
  • 通訊錄的實現(xiàn)(靜態(tài)入手版)

    通訊錄的實現(xiàn)(靜態(tài)入手版)

    ??博客主頁:阿博歷練記 ??文章專欄:c語言(初階與進階) ??代碼倉庫:阿博編程日記 ??歡迎關(guān)注:歡迎友友們點贊收藏+關(guān)注哦 在生活中,我們可以通過通訊錄快速實現(xiàn)對一位好友的查找,便捷了我們的日常生活,今天阿博就帶領(lǐng)友友們一起探索通訊錄的實現(xiàn)??????

    2024年02月02日
    瀏覽(33)
  • C語言進階——靜態(tài)通訊錄

    C語言進階——靜態(tài)通訊錄

    作者: 敲代碼の流川楓 博客主頁:流川楓的博客 專欄:C語言從入門到進階 語錄: Stay hungry stay foolish 工欲善其事必先利其器,給大家介紹一款超牛的斬獲大廠offer利器——??途W(wǎng) 點擊免費注冊和我一起刷題吧 目錄 1.contact.h——通訊錄相關(guān)的聲明 2.contact.c——通訊錄相關(guān)的

    2024年02月16日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包