怎么在C語言中利用結構體實現一個通訊錄?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創新互聯是一家專注于網站設計、做網站與策劃設計,天山網站建設哪家好?創新互聯做網站,專注于網站建設10多年,網設計領域的專業建站公司;建站業務涵蓋:天山等地區。天山做網站價格咨詢:18982081108提供方法:
1. 添加聯系人信息
2. 刪除指定聯系人信息
3. 查找指定聯系人信息
4. 修改指定聯系人信息
5. 顯示所有聯系人信息
6. 清空所有聯系人
代碼實現:
頭文件:
#ifndef __HEAD_H__ ////防止頭文件被多次調用 #define __HEAD_H__ #include<stdio.h> #include<string.h> #include<stdlib.h> #define PEOPLE_MAX 1000 #define NAME_LENTH 20 #define SEX_LENTH 5 #define AGE_LENTH 10 #define TEL_LENTH 15 #define ADDR_LENTH 50 //宏定義各個數據所需的大小,后續引用直接可以使用名稱,或需修改時只用修改這里就可以了 struct People { char name[NAME_LENTH]; char sex[SEX_LENTH]; int age; char tel[TEL_LENTH ]; char addr[ADDR_LENTH]; }; //定義人的信息結構體(包含各種信息) struct Contact { struct People person[PEOPLE_MAX]; int user_count; }; //定義通訊錄結構體(包含人的信息的結構體和用戶個數) typedef struct Contact * pContact; int add_contact(pContact pcon); //pContact是一個結構體指針類型,pcon是一個指向struct Contact的一個指針 int dele_contact(pContact pcon); //例如:typedef int * int 即 int *p ==> int p int find_contact(pContact pcon); int modify_contact(pContact pcon); int show_contact(pContact pcon); int clear_contact(pContact pcon); void menu(); //函數的聲明 #endif
各種函數實現:
#include"head.h" int add_contact(pContact pcon) { if(pcon->user_count >= PEOPLE_MAX) { printf("contact is full!\n"); return -1; } else { printf("input name,please!\n"); scanf("%s",pcon->person[pcon->user_count].name); printf("input sex,please!\n"); scanf("%s",pcon->person[pcon->user_count].sex); printf("input age,please!\n"); scanf("%d",&pcon->person[pcon->user_count].age); //這里用%d輸出int printf("input tel,please!\n"); scanf("%s",pcon->person[pcon->user_count].tel); printf("input addr,please!\n"); scanf("%s",pcon->person[pcon->user_count].addr); (pcon->user_count)++; } return 0; } //添加信息的實現 int dele_contact(pContact pcon) { int ret = find_contact(pcon); //調用查找函數并保存其值 if(ret != -1) { int i = 0; i = ret; //這里要用另一個變量來保存輸入的姓名 for(i = 0;i < pcon->user_count-1;i++) { pcon->person[i] = pcon->person[i+1]; //用后一個覆蓋前邊的,如果要刪除的是最后一個不進行此步驟 } pcon->user_count --; //直接減去最后一個即count-- } return 0; } int find_contact(pContact pcon) { int i = 0; char ret[NAME_LENTH]; //用另一個數組來保存name printf("input name,please!\n"); scanf("%s",ret); while(i <= pcon->user_count) { if(strcmp(ret,pcon->person[i].name)== 0) //比較輸入的姓名和通訊錄中已有的姓名 { printf("name\tsex\tage\ttel\taddr\t\n"); printf("%s\t",pcon->person[i].name); printf("%s\t",pcon->person[i].sex); printf("%d\t",pcon->person[i].age); printf("%s\t",pcon->person[i].tel); printf("%s\t\n",pcon->person[i].addr); return i; } i++; } printf("sorry,the name you find is not exist!\n"); return -1; } int modify_contact(pContact pcon) //修改函數,首先找到如要修改的姓名,然后重新輸入 { int ret = find_contact(pcon); if(ret != -1) { printf("input name,please!\n"); scanf("%s",pcon->person[ret].name); printf("input sex,please!\n"); scanf("%s",pcon->person[ret].sex); printf("input age,please!\n"); scanf("%d",&(pcon->person[ret].age)); printf("input tel,please!\n"); scanf("%s",pcon->person[ret].tel); printf("input addr,please!\n"); scanf("%s",pcon->person[ret].addr); } else { printf("sorry,the name you find is not exist!\n"); } return 0; } int show_contact(pContact pcon) { int i = 0; printf("name\tsex\tage\ttel\t\taddr\t\n"); //制表符來制作表頭 for(i = 0;i < pcon->user_count;i++) { printf("%s\t",pcon->person[i].name); printf("%s\t",pcon->person[i].sex); printf("%d\t",pcon->person[i].age); printf("%s\t",pcon->person[i].tel); printf("%s\t\n",pcon->person[i].addr); } printf("\n"); return 0; } int clear_contact(pContact pcon) { pcon->user_count = 0 ; return 0; } //清除所有人,直接讓成員個數變為0即可 void menu() { printf("-------contact---------\n"); printf(" 1.添加聯系人信息 \n"); printf(" 2.刪除指定聯系人信息 \n"); printf(" 3.查找指定聯系人信息 \n"); printf(" 4.修改指定聯系人信息 \n"); printf(" 5.顯示所有聯系人信息 \n"); printf(" 6.清空所有聯系人 \n"); printf(" 0.謝謝使用 \n"); printf("-------contact---------\n"); }
主函數:
#include"head.h" int main() { int n=1; struct Contact people; //調用通訊錄結構體 people.user_count = 0; //初始化user_count while(n) { menu(); printf("please input\n"); scanf("%d",&n); switch(n) { case 1: { add_contact(&people); break; } case 2: { dele_contact(&people); break; } case 3: { find_contact(&people); break; } case 4: { modify_contact(&people); break; } case 5: { show_contact(&people); break; } case 6: { clear_contact(&people); break; } default: { return 0; break; } //switch case語句分支選擇不同函數實現不同作用 } } return 0; }
結果實現:
關于怎么在C語言中利用結構體實現一個通訊錄問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創新互聯網站建設公司行業資訊頻道了解更多相關知識。
另外有需要云服務器可以了解下創新互聯建站vcdvsql.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章標題:怎么在C語言中利用結構體實現一個通訊錄-創新互聯
鏈接地址:http://vcdvsql.cn/article8/jgcop.html
成都網站建設公司_創新互聯,為您提供App開發、用戶體驗、面包屑導航、服務器托管、微信小程序、手機網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯