怎么在C語(yǔ)言中利用結(jié)構(gòu)體實(shí)現(xiàn)通訊錄?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、右江網(wǎng)絡(luò)推廣、成都小程序開(kāi)發(fā)、右江網(wǎng)絡(luò)營(yíng)銷、右江企業(yè)策劃、右江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供右江建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com程序如下:
#include#include #include struct People { char name[20]; char sex[5]; int age; char tel[15]; char addr[50]; }; //定義人的信息結(jié)構(gòu)體(包含各種信息) struct Contact { struct People person[1000]; //定義通訊錄結(jié)構(gòu)體 int n; //(包含人的信息的結(jié)構(gòu)體和用戶個(gè)數(shù)n) }; typedef struct Contact * p; void menu(); int add(p q); //p是一個(gè)結(jié)構(gòu)體指針類型,q是一個(gè)指向struct Contact的一個(gè)指針 int delete(p q); //例如:typedef int * int 即 int *p ==> int p int find(p q); int modify(p q); int show(p q); int clear(p q); //函數(shù)的聲明 void menu() //目錄格式 { printf("====================歡迎來(lái)到蘇嵌154通訊錄==================\n"); printf("----------------------1.添加聯(lián)系人信息---------------------\n"); printf("----------------------2.刪除指定聯(lián)系人信息-----------------\n"); printf("----------------------3.查找指定聯(lián)系人信息-----------------\n"); printf("----------------------4.修改指定聯(lián)系人信息-----------------\n"); printf("----------------------5.顯示所有聯(lián)系人信息-----------------\n"); printf("----------------------6.清空所有聯(lián)系人---------------------\n"); printf("----------------------0.謝謝使用---------------------------\n"); printf("====================歡迎來(lái)到蘇嵌154通訊錄==================\n"); } int add(p q) //添加聯(lián)系人 { if((*q).n >= 1000) { printf("contact is full!\n"); return -1; } else { printf("輸入姓名:\n"); scanf("%s",(*q).person[(*q).n].name); printf("輸入性別:\n"); scanf("%s",(*q).person[(*q).n].sex); printf("輸入年齡:\n"); scanf("%d",&(*q).person[(*q).n].age); printf("輸入電話:\n"); scanf("%s",(*q).person[(*q).n].tel); printf("輸入地址:\n"); scanf("%s",(*q).person[(*q).n].addr); ((*q).n)++; } return 0; } int delete(p q) //刪除聯(lián)系人 { int ret = find(q); //調(diào)用查找函數(shù)并保存其值 if(ret != -1) { int i = 0; i = ret; //這里要用另一個(gè)變量來(lái)保存輸入的姓名 for(i = 0;i < (*q).n-1;i++) { (*q).person[i] = (*q).person[i+1]; //用后一個(gè)覆蓋前邊的,如果要?jiǎng)h除的是最后一個(gè)不進(jìn)行此步驟 } (*q).n --; //直接減去最后一個(gè)即count-- } return 0; } int find(p q) //查找聯(lián)系人 { int i = 0; char ret[20]; //用另一個(gè)數(shù)組來(lái)保存姓名 printf("輸入姓名:\n"); scanf("%s",ret); while(i <= (*q).n) { if(strcmp(ret,(*q).person[i].name)== 0) //比較輸入的姓名和通訊錄中已有的姓名 { printf("姓名\t性別\t年齡\t電話\t地址\4t\n"); //制表符來(lái)制作表頭 printf("%s\t",(*q).person[i].name); printf("%s\t",(*q).person[i].sex); printf("%d\t",(*q).person[i].age); printf("%s\t",(*q).person[i].tel); printf("%s\4t\n",(*q).person[i].addr); return i; } i++; } printf("你丫的我班沒(méi)這個(gè)人\n"); return -1; } int modify(p q) //修改函數(shù),首先找到如要修改的姓名,然后重新輸入 { int ret = find(q); if(ret != -1) { printf("輸入修改的姓名:\n"); scanf("%s",(*q).person[ret].name); printf("輸入修改的性別:\n"); scanf("%s",(*q).person[ret].sex); printf("輸入修改的年齡:\n"); scanf("%d",&((*q).person[ret].age)); printf("輸入修改的電話:\n"); scanf("%s",(*q).person[ret].tel); printf("輸入修改的地址:\n"); scanf("%s",(*q).person[ret].addr); } else { printf("你丫的我班沒(méi)這個(gè)人\n"); } return 0; } int show(p q) //顯示全部聯(lián)系人 { int i = 0; printf("姓名\t性別\t年齡\t電話\t地址\4t\n"); for(i = 0;i < (*q).n;i++) { printf("%s\t",(*q).person[i].name); printf("%s\t",(*q).person[i].sex); printf("%d\t",(*q).person[i].age); printf("%s\t",(*q).person[i].tel); printf("%s\4t\n",(*q).person[i].addr); } printf("\n"); return 0; } int clear(p q) //清除所有人,直接讓成員個(gè)數(shù)變?yōu)? { (*q).n = 0 ; return 0; } int main() { int n=1; struct Contact people; //調(diào)用通訊錄結(jié)構(gòu)體 people.n = 0; //初始化n while(n) { menu(); printf("請(qǐng)選擇你的騷操作:\n"); scanf("%d",&n); switch(n) //switch case語(yǔ)句分支選擇不同函數(shù)實(shí)現(xiàn)不同作用 { case 1: { add(&people); break; } case 2: { delete(&people); break; } case 3: { find(&people); break; } case 4: { modify(&people); break; } case 5: { show(&people); break; } case 6: { clear(&people); break; } default: { return 0; break; } } } return 0; }
關(guān)于怎么在C語(yǔ)言中利用結(jié)構(gòu)體實(shí)現(xiàn)通訊錄問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。