用結構體寫一個簡單的通訊錄

一個簡單的通訊錄

通訊錄應該具備簡單的一些功能
1 增添聯系人
2 刪除聯系人
3 查找聯系人
4 修改聯系人
5 按名字給聯系人排序
6 查看通訊錄
除此之外,應該在實現上還應該具備一些其他的功能函數
比如 初始化通訊錄在這里插入圖片描述
這些都是功能函數,而整個函數入口應該為main
在這里插入圖片描述
為了更加清晰,更加鮮明的體現功能區域,將所有的宏定義,和一些聲明我放在一個頭文件中。
在這里插入圖片描述

要創建一個通訊錄,我們要抽象化一個人,將這個人的一些信息放在一個結構體中
在這里插入圖片描述
而一個通訊錄中不可能只有一個人,所以需要一個結構體數組,來裝你要存入的數據
在這里插入圖片描述
并創建一個整形變量sz來記錄當前通訊錄當前存入了多少個人

而在整個main()中只有一個函數test(),我們將整個函數功能的選擇放在這里,雖然switch語句并不好,但在這里,依然用switch進行選擇
在這里插入圖片描述

在這里插入圖片描述
本來選擇用switch時,應該用一個整形來進行選擇,但在這里,我用了一個枚舉類型,來更直觀的進行選擇
在這里插入圖片描述
枚舉類型,從上至下,對應的數字應該為 0,1,2,3,4,5,6

接下來就是每個功能函數的實現

初始化通訊錄

在這里插入圖片描述
首先傳結構體指針過來,需要判斷有效性,用assert斷言判斷,初始化通訊錄
人數為0,并給結構體數組中每個元素賦值0,此處用memset內存建立函數實現。

增添聯系人

在這里插入圖片描述

查看通訊錄

將已經錄入的信息打印一遍
在這里插入圖片描述

內部查找函數

因為進行下來的操作時都有一個操作就是查找所以,先寫一個內部的查找函數
在這里插入圖片描述

刪除聯系人

在這里插入圖片描述
此處就要用到上述寫的內部查找函數

查找聯系人

在這里插入圖片描述
找到之后打印一遍,給用戶一個友好的提示

修改聯系人

在這里插入圖片描述

按名字給聯系人排序

此處用的是冒泡排序
在這里插入圖片描述
到此,所有功能都已實現,但此通訊錄是一個靜態通訊錄,不能根據具體的實際情況進行擴容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383433.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383433.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383433.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jffs2 啟動的常見的問題

Q:在啟動過程中出現at91sam user.warn kernel: Empty flash at 0x00f0fffc ends at 0x00f10000問題 A:在mkfs.jffs2的時候,加上-e 0x20000指定擦除塊的大小。-e是指定擦除塊的大小,我們使用的nandflash的塊大小為128K字節&#xf…

c動態內存管理

動態內存管理 我們之前要開辟內存用的方法都是定義變量,比如 但是上述開辟內存的方法有兩個特點 1空間開辟大小是固定的 2數組在申明的時候,必須指定數組的長度,它所需要的內存在編譯時分配 malloc和free c中提供一個動態內存開辟函數 這…

JFFS2文件系統掛載過程優化的分析報告

一 問題描述 在上電啟動優化中發現Linux系統下掛載JFFS2文件系統耗時較長,以128M的NOR FLASH為例,用時接近20秒。后續單板的FLASH容量為256M,時間會更長。如此長的掛載時間,會大增加系統的上電啟動時間。希望能對mount功能或JFFS…

右移函數(字符串,數組)

右移函數 以上是數組右移,將int換成char 把數組內容改成字符串就行。

關于jffs2文件系統如何掉電保護

JFFS2 是將節點信息保存在內存中 Flash上日志型文件系統的資料,了解到傳統的基于閃存轉換層(FLT)的文件系統存在的主要問題: 1. 效率低。因為每次都要把要修改的數據所在擦寫塊放入內存,產生了許多不必要的讀操作&…

c中指針簡介

c中指針簡介 首先我們來看一下指針的一些基本概念 ![在這里插入圖片描述](https://img 而對于指針的應用,平常有一些形式,總結了一下大概有這幾種用法 對于以上的幾種用法,我依次給出詳盡的解釋 //這是一個普通的整型變量 1 //首先從P 處開…

判斷一個字符串是否另一個字符串的右移后的

首先我們把需要判斷的字符串傳進來,開辟一塊大小為兩個字符串的長度總和加1的動態的空間,然后后字符串拷貝函數將一個字符串拷貝到開辟空降中,再將這個字符串再次連接到這塊動態的空間中,等于就是將一個字符串拷貝了兩遍。然后比較…

登陸后保持環境變量導出

在嵌入式開發中,要保證在系統登錄后,導出的環境變量依然有效,需要修改如下文件: /etc/profile export PATH/bin:/sbin:/usr/bin:/usr/sbin export PATH/system/bin:$PATH export LD_LIBRARY_PATH/system/lib export LD_LIBRARY_P…

fasync驅動異步通知機制

fasync簡介 編輯異步通知fasync應用于系統調用signal和sigaction函數,簡單的說,signal函數就是讓一個信號與與一個函數對應,每當接收到這個信號就會調用相應的函數。[1]那么什么是異步通知?異步通知類似于中斷的機制,當…

Linux中最常見命令總結

Linux中最常見命令總結 基礎命令 命令使用格式 命令名【選項參數】 【操作對象】Ls -a workspace目錄命令 Ls 默認顯示瀏覽當前文件目錄 -a 顯示所有文件,不忽略以點開頭的文件 Linux下以.開頭的文件是隱藏文件 每個目錄下文件的兩個特殊目錄 . 表示目錄自身…

不帶頭結點的鏈表基礎操作(初始化,增刪改查)

鏈表是什么? **鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括…

fcntl的使用

功能描述&#xff1a;根據文件描述詞來操作文件的特性。 #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); [描述] fcntl()針對(文件)描述符提供控…

鏈表面試題1:反轉單鏈表,不帶頭結點。

三個指針p1,p2,p3&#xff0c;p1指向頭結點的前一個結點&#xff0c;也就時指空&#xff0c;p2指向頭結點&#xff0c;p3指向頭結點下一個結點。 p3指向p2的下一個&#xff0c;讓p2指針域指向p1&#xff0c;讓p1挪到p2上&#xff0c;再讓p2指向p3.

dup/dup2函數的用法

系統調用dup和dup2能夠復制文件描述符。dup返回新的文件文件描述符&#xff08;沒有用的文件描述符最小的編號&#xff09;。dup2可以讓用戶指定返回的文件描述符的值&#xff0c;如果需要&#xff0c;則首先接近newfd的值&#xff0c;他通常用來重新打開或者重定向一個文件描述…

鏈表面試題2:編寫代碼,以給定值x為基準將鏈表分割成兩部分,所有小于x的結點排在大于或等于x的結點之前

我們可以&#xff0c;用兩個新鏈表&#xff0c;一個存比基準值大的&#xff0c;另一個存比基準值小的。然后再拼接在一起。 用尾插的方法&#xff0c;首先說小的&#xff0c;創建兩個指針&#xff0c;一個頭&#xff0c;一個尾&#xff0c;再創建個指針跑鏈表&#xff0c;掃描…

文件系統緩存dirty_ratio與dirty_background_ratio兩個參數區別

這兩天在調優數據庫性能的過程中需要降低操作系統文件Cache對數據庫性能的影響&#xff0c;故調研了一些降低文件系統緩存大小的方法&#xff0c;其中一種是通過修改/proc/sys/vm/dirty_background_ration以及/proc/sys/vm/dirty_ratio兩個參數的大小來實現。看了不少相關博文的…

棧和隊列的基本操作(棧和隊列的區別)

數據結構中的棧與內存中的棧的不同 一、數據結構中的堆棧 在數據結構中的堆棧&#xff0c;實際上堆棧是兩種數據結構&#xff1a;堆和棧。堆和棧都是一種數據項按序排列的數據結構。 1.棧就像裝數據的桶或箱子 我們先從大家比較熟悉的棧說起吧&#xff0c;它是一種具有后進先…

Linux I/O 調度方法

操作系統的調度有 CPU調度 CPU scheduler IO調度 IO scheduler IO調度器的總體目標是希望讓磁頭能夠總是往一個方向移動,移動到底了再往反方向走,這恰恰就是現實生活中的電梯模型,所以IO調 度器也被叫做電梯. (elevator)而相應的算法也就被叫做電梯算法. 而Linux中I…

編譯libcurl

1.下載源碼后&#xff0c;執行./buidconf產生configure配置文件 2.通過build.sh來設定configure 配置的參數 #!/bin/sh # export CFLAGS-O3 -w -isystem /home/xuxuequan/Ingenicwork/toolchain/mips-gcc472-glibc216-32bit/mips-linux-gnu/libc/usr/include export CPPFLAGS…

鏈表面試題3:將兩個有序鏈表合并為一個新的有序鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成 的。

鏈表面試題3&#xff1a;將兩個有序鏈表合并為一個新的有序鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成 的。 首先我們的思想是將得一個鏈表和第二個鏈表的每個結點進行比較&#xff0c;誰小誰就插入到新鏈表的最后。 首先我們要判段鏈表是否為空&#xff0c;…