摘要:利用語(yǔ)言進(jìn)階知識(shí)中的結(jié)構(gòu)體枚舉聯(lián)合體來(lái)制作通訊錄管理系統(tǒng)工程。
利用C語(yǔ)言進(jìn)階知識(shí)中的結(jié)構(gòu)體、枚舉、聯(lián)合體來(lái)制作通訊錄管理系統(tǒng)工程。
相比于以往寫(xiě)三子棋游戲的籠統(tǒng),該文章更加詳細(xì)的解釋每一步、每個(gè)函數(shù)創(chuàng)建后的測(cè)試,逐層分析代碼。
日后,看懂的基礎(chǔ)上還需多加敲寫(xiě),不斷完善自己的邏輯!?????????????????????
????????????????
目錄
Add函數(shù)功能實(shí)現(xiàn)以及代碼初步建立:
?排序函數(shù)就不再多帶帶編寫(xiě)了,利用qsort( )函數(shù)就可以解決,閑時(shí)可能會(huì)繼續(xù)在此寫(xiě)寫(xiě).........
目前,先在contact.c文件中聲明了一個(gè)人的所包含的信息、多少個(gè)人? 以及當(dāng)前通訊錄有效信息(? 該通訊錄目前包含多少人? ?)
contact.c文件
#pragma once#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{ char name[NAME_MAX]; int age; char sex[SEX_MAX]; char tele[TELE_MAX]; char addr[ADDR_MAX];};//1000個(gè)人的信息struct PeoInfo data[PEOPLE_MAX];int sz;//當(dāng)前通訊錄的有效信息(包含多少個(gè)人的信息)
有了通訊錄,我們需要清理,即:
contact.c文件
#pragma once#include#include#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{ char name[NAME_MAX]; int age; char sex[SEX_MAX]; char tele[TELE_MAX]; char addr[ADDR_MAX];};//通訊錄struct Contact{ struct PeoInfo data[PEOPLE_MAX];//1000個(gè)人的數(shù)據(jù),存放在data數(shù)組中 int sz;//記錄當(dāng)前通訊錄的有效信息的個(gè)數(shù)(包含多少個(gè)人的信息)};//初始化通訊錄void InitContact(struct Contact* pc);
contact.c文件
#define _CRT_SECURE_NO_WARNINGS#include"contact.h"http://初始化通訊錄void InitContact(struct Contact* pc){ pc->sz = 0;//默認(rèn)沒(méi)有信息 //memset(pc->data, 0, PEOPLE_MAX * sizeof(struct PeoInfo)); memset(pc->data, 0, PEOPLE_MAX * sizeof(pc->data));}
test.c文件
#include"contact.h"void menu(){ printf("************************************/n"); 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");}enum Option{ EXIT,//0 ADD, DEL, SEARCH, MODIFY, SHOW, SORT};int main(){ int input = 0; //創(chuàng)建一個(gè)通訊錄 struct Contact con; //初始化通訊錄 InitContact(&con); do { menu(); printf("請(qǐng)選擇:>/n"); scanf("%d", &input); switch (input) { case ADD: break; case DEL: break; case SHOW: break; case EXIT: printf("退出通訊錄/n"); break; default: printf("選擇錯(cuò)誤!/n"); break; } } while (input); return 0;}
——————>查看添加聯(lián)系人的工程是否制作完成,利用Show來(lái)打印:
test.c文件
#include"contact.h"void menu(){ printf("************************************/n"); 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");}enum Option{ EXIT,//0 ADD, DEL, SEARCH, MODIFY, SHOW, SORT};int main(){ int input = 0; //創(chuàng)建一個(gè)通訊錄 struct Contact con; //初始化通訊錄 InitContact(&con); do { menu(); printf("請(qǐng)選擇:>/n"); scanf("%d", &input); switch (input) { case ADD: AddContact(&con); break; case DEL: break; case SHOW: ShowContact(&con); break; case EXIT: printf("退出通訊錄/n"); break; default: printf("選擇錯(cuò)誤!/n"); break; } } while (input); return 0;}
contact.h文件
#pragma once#include#include#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{ char name[NAME_MAX]; int age; char sex[SEX_MAX]; char tele[TELE_MAX]; char addr[ADDR_MAX];};//通訊錄struct Contact{ struct PeoInfo data[PEOPLE_MAX];//1000個(gè)人的數(shù)據(jù),存放在data數(shù)組中 int sz;//記錄當(dāng)前通訊錄的有效信息的個(gè)數(shù)(包含多少個(gè)人的信息)};//初始化通訊錄void InitContact(struct Contact* pc);//增加聯(lián)系人void AddContact(struct Contact* pc);//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc);
contact.c文件
#define _CRT_SECURE_NO_WARNINGS#include"contact.h"http://初始化通訊錄void InitContact(struct Contact* pc){ pc->sz = 0;//默認(rèn)沒(méi)有信息 //memset(pc->data, 0, PEOPLE_MAX * sizeof(struct PeoInfo)); memset(pc->data, 0, PEOPLE_MAX * sizeof(pc->data));}//增加聯(lián)系人void AddContact(struct Contact* pc){ if (pc->sz == PEOPLE_MAX) { printf("通訊錄滿了/n"); } else { printf("請(qǐng)輸入名字:>"); scanf("%s", pc->data[pc->sz].name); printf("請(qǐng)輸入年齡:>"); scanf("%d", &(pc->data[pc->sz].age)); printf("請(qǐng)輸入性別:>"); scanf("%s", pc->data[pc->sz].sex); printf("請(qǐng)輸入電話:>"); scanf("%s", pc->data[pc->sz].tele); printf("請(qǐng)輸入地址:>"); scanf("%s", pc->data[pc->sz].addr); //提示 printf("添加成功!/n"); pc->sz++; }}//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc){ int i = 0; //打印標(biāo)題 (美觀) printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr"); for (i = 0; i < pc->sz; i++) { //打印每個(gè)數(shù)據(jù) printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n", pc->data[i].name, pc->data[i].age, pc->data[i].sex, pc->data[i].tele, pc->data[i].addr ); }}
打印效果演示:
刪除功能:
我們想要實(shí)現(xiàn)指定刪除聯(lián)系人的功能,就需要先確定要?jiǎng)h除的名字是什么,那么必然需要判斷該名字在不在此通訊錄中,就想到了需要pos記錄下標(biāo)
test.c文件
#include"contact.h"void menu(){ printf("************************************/n"); 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");}enum Option{ EXIT,//0 ADD, DEL, SEARCH, MODIFY, SHOW, SORT};int main(){ int input = 0; //創(chuàng)建一個(gè)通訊錄 struct Contact con; //初始化通訊錄 InitContact(&con); do { menu(); printf("請(qǐng)選擇:>/n"); scanf("%d", &input); switch (input) { case ADD: AddContact(&con); break; case DEL: DelContact(&con); break; case SHOW: ShowContact(&con); break; case EXIT: printf("退出通訊錄/n"); break; default: printf("選擇錯(cuò)誤!/n"); break; } } while (input); return 0;}
contact.h文件
#pragma once#include#include#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{ char name[NAME_MAX]; int age; char sex[SEX_MAX]; char tele[TELE_MAX]; char addr[ADDR_MAX];};//通訊錄struct Contact{ struct PeoInfo data[PEOPLE_MAX];//1000個(gè)人的數(shù)據(jù),存放在data數(shù)組中 int sz;//記錄當(dāng)前通訊錄的有效信息的個(gè)數(shù)(包含多少個(gè)人的信息)};//初始化通訊錄void InitContact(struct Contact* pc);//增加聯(lián)系人void AddContact(struct Contact* pc);//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc);//刪除指定聯(lián)系人void DelContact(struct Contact* pc);
contact.c文件
用strcmp函數(shù)來(lái)確認(rèn)是否通訊錄中含有該名字的信息
如果存在改名字信息,就需要完成指定刪除,而刪除就要把該指定聯(lián)系人該行信息刪除后,后面聯(lián)系人的信息依次順移
for (j = pos; j < pc->sz - 1; j++)中的 pc->sz - 1需要多加思考,因?yàn)樽詈笠粋€(gè)信息后面就沒(méi)有信息了,data[j+1]繼續(xù)將后面? “? 莫須有 ”? 的信息往前順移就不合理了。
#define _CRT_SECURE_NO_WARNINGS#include"contact.h"http://初始化通訊錄void InitContact(struct Contact* pc){ pc->sz = 0;//默認(rèn)沒(méi)有信息 //memset(pc->data, 0, PEOPLE_MAX * sizeof(struct PeoInfo)); memset(pc->data, 0, sizeof(pc->data));}//增加聯(lián)系人void AddContact(struct Contact* pc){ if (pc->sz == PEOPLE_MAX) { printf("通訊錄滿了/n"); } else { printf("請(qǐng)輸入名字:>"); scanf("%s", pc->data[pc->sz].name); printf("請(qǐng)輸入年齡:>"); scanf("%d", &(pc->data[pc->sz].age)); printf("請(qǐng)輸入性別:>"); scanf("%s", pc->data[pc->sz].sex); printf("請(qǐng)輸入電話:>"); scanf("%s", pc->data[pc->sz].tele); printf("請(qǐng)輸入地址:>"); scanf("%s", pc->data[pc->sz].addr); //提示 printf("添加成功!/n"); pc->sz++; }}//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc){ int i = 0; //打印標(biāo)題 (美觀) printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr"); for (i = 0; i < pc->sz; i++) { //打印每個(gè)數(shù)據(jù) printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n", pc->data[i].name, pc->data[i].age, pc->data[i].sex, pc->data[i].tele, pc->data[i].addr ); }}//刪除指定聯(lián)系人int FindContactByName(struct Contact* pc, const char* name){ int i = 0; for (i = 0; i < pc->sz; i++) { if (strcmp(pc->data[i].name, name) == 0) { return i; } } //找不到 return -1;}void DelContact(struct Contact* pc){ char name[NAME_MAX] = { 0 }; printf("請(qǐng)輸入要?jiǎng)h除聯(lián)系人的名字:>"); scanf("%s", name); //查找 int pos = FindContactByName(pc, name); if (pos == -1) { printf("指定的聯(lián)系人不存在!/n"); } //刪除 else { int j = 0; for (j = pos; j < pc->sz - 1; j++) { pc->data[j] = pc->data[j + 1]; } pc->sz--; //提示 printf("刪除成功!/n"); }}
我們發(fā)現(xiàn)程序執(zhí)行到最后有個(gè)小Bug,那就是通訊錄已經(jīng)為空了,繼續(xù)刪是執(zhí)行不了的,所以我們代碼中應(yīng)該再完善一下;
刪除之前,先判斷一下該通訊錄是否還有信息可以刪除,如果沒(méi)有信息可以刪除,那么就直接return,表示刪除結(jié)束就可以了。
完善的contact.c文件:
//省略內(nèi)容,見(jiàn)上void DelContact(struct Contact* pc){ if (pc->sz == 0) { printf("通訊錄為空,無(wú)法刪除!/n"); return; } char name[NAME_MAX] = { 0 }; printf("請(qǐng)輸入要?jiǎng)h除聯(lián)系人的名字:>"); scanf("%s", name); //查找 int pos = FindContactByName(pc, name); if (pos == -1) { printf("指定的聯(lián)系人不存在!/n"); } //刪除 else { int j = 0; for (j = pos; j < pc->sz - 1; j++) { pc->data[j] = pc->data[j + 1]; } pc->sz--; //提示 printf("刪除成功!/n"); }}
想要實(shí)現(xiàn)查找,就需要用FindContactByName先確定pos,看是否查找的聯(lián)系人在通訊錄里。
如果在通訊錄里,就用類似于顯示功能函數(shù)將 “ 遍歷 ”步驟換成僅打印pos位置的數(shù)據(jù)即可
test.c文件
#include"contact.h"void menu(){ printf("************************************/n"); 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");}enum Option{ EXIT,//0 ADD, DEL, SEARCH, MODIFY, SHOW, SORT};int main(){ int input = 0; //創(chuàng)建一個(gè)通訊錄 struct Contact con; //初始化通訊錄 InitContact(&con); do { menu(); printf("請(qǐng)選擇:>/n"); scanf("%d", &input); switch (input) { case ADD: AddContact(&con); break; case DEL: DelContact(&con); break; case SEARCH: SearchContact(&con); break; case SHOW: ShowContact(&con); break; case EXIT: printf("退出通訊錄/n"); break; default: printf("選擇錯(cuò)誤!/n"); break; } } while (input); return 0;}
contact.h文件
#pragma once#include#include#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{ char name[NAME_MAX]; int age; char sex[SEX_MAX]; char tele[TELE_MAX]; char addr[ADDR_MAX];};//通訊錄struct Contact{ struct PeoInfo data[PEOPLE_MAX];//1000個(gè)人的數(shù)據(jù),存放在data數(shù)組中 int sz;//記錄當(dāng)前通訊錄的有效信息的個(gè)數(shù)(包含多少個(gè)人的信息)};//初始化通訊錄void InitContact(struct Contact* pc);//增加聯(lián)系人void AddContact(struct Contact* pc);//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc);//刪除指定聯(lián)系人void DelContact(struct Contact* pc);//查找指定聯(lián)系人void SearchContact(const struct Contact* pc);
contact.c文件
#define _CRT_SECURE_NO_WARNINGS#include"contact.h"http://初始化通訊錄void InitContact(struct Contact* pc){ pc->sz = 0;//默認(rèn)沒(méi)有信息 //memset(pc->data, 0, PEOPLE_MAX * sizeof(struct PeoInfo)); memset(pc->data, 0, sizeof(pc->data));}//增加聯(lián)系人void AddContact(struct Contact* pc){ if (pc->sz == PEOPLE_MAX) { printf("通訊錄滿了/n"); } else { printf("請(qǐng)輸入名字:>"); scanf("%s", pc->data[pc->sz].name); printf("請(qǐng)輸入年齡:>"); scanf("%d", &(pc->data[pc->sz].age)); printf("請(qǐng)輸入性別:>"); scanf("%s", pc->data[pc->sz].sex); printf("請(qǐng)輸入電話:>"); scanf("%s", pc->data[pc->sz].tele); printf("請(qǐng)輸入地址:>"); scanf("%s", pc->data[pc->sz].addr); //提示 printf("添加成功!/n"); pc->sz++; }}//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc){ int i = 0; //打印標(biāo)題 (美觀) printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr"); for (i = 0; i < pc->sz; i++) { //打印每個(gè)數(shù)據(jù) printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n", pc->data[i].name, pc->data[i].age, pc->data[i].sex, pc->data[i].tele, pc->data[i].addr ); }}//刪除指定聯(lián)系人int FindContactByName(const struct Contact* pc, const char* name){ int i = 0; for (i = 0; i < pc->sz; i++) { if (strcmp(pc->data[i].name, name) == 0) { return i; } } //找不到 return -1;}void DelContact(struct Contact* pc){ if (pc->sz == 0) { printf("通訊錄為空,無(wú)法刪除!/n"); return; } char name[NAME_MAX] = { 0 }; printf("請(qǐng)輸入要?jiǎng)h除聯(lián)系人的名字:>"); scanf("%s", name); //查找 int pos = FindContactByName(pc, name); if (pos == -1) { printf("指定的聯(lián)系人不存在!/n"); } //刪除 else { int j = 0; for (j = pos; j < pc->sz - 1; j++) { pc->data[j] = pc->data[j + 1]; } pc->sz--; //提示 printf("刪除成功!/n"); }}//查找指定聯(lián)系人void SearchContact(const struct Contact* pc){ char name[NAME_MAX] = { 0 }; printf("輸入要查找的聯(lián)系人的名字:>"); scanf("%s", name); //查找 int pos = FindContactByName(pc, name); if (pos == -1) { printf("查無(wú)此人!/n"); } else { //打印標(biāo)題 (美觀) printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr"); //打印每個(gè)數(shù)據(jù) printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n", pc->data[pos].name, pc->data[pos].age, pc->data[pos].sex, pc->data[pos].tele, pc->data[pos].addr); }}
和查找函數(shù)一樣,甚至可以直接copy下來(lái)代碼,來(lái)判斷要修改的聯(lián)系人是否存在。
如果pos存在,那么就需要用類似于Add函數(shù)的代碼,只不過(guò)把 “ 遍歷 ”換成pos位置處的數(shù)據(jù)來(lái)進(jìn)行修改即可:
test.c文件
#include"contact.h"void menu(){ printf("************************************/n"); 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");}enum Option{ EXIT,//0 ADD, DEL, SEARCH, MODIFY, SHOW, SORT};int main(){ int input = 0; //創(chuàng)建一個(gè)通訊錄 struct Contact con; //初始化通訊錄 InitContact(&con); do { menu(); printf("請(qǐ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 EXIT: printf("退出通訊錄/n"); break; default: printf("選擇錯(cuò)誤!/n"); break; } } while (input); return 0;}
contact.h文件
#pragma once#include#include#define NAME_MAX 30#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 30#define PEOPLE_MAX 1000//一個(gè)人的信息struct PeoInfo{ char name[NAME_MAX]; int age; char sex[SEX_MAX]; char tele[TELE_MAX]; char addr[ADDR_MAX];};//通訊錄struct Contact{ struct PeoInfo data[PEOPLE_MAX];//1000個(gè)人的數(shù)據(jù),存放在data數(shù)組中 int sz;//記錄當(dāng)前通訊錄的有效信息的個(gè)數(shù)(包含多少個(gè)人的信息)};//初始化通訊錄void InitContact(struct Contact* pc);//增加聯(lián)系人void AddContact(struct Contact* pc);//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc);//刪除指定聯(lián)系人void DelContact(struct Contact* pc);//查找指定聯(lián)系人void SearchContact(const struct Contact* pc);//修改指定聯(lián)系人void ModifyContact(struct Contact* pc);
contact.c文件
#define _CRT_SECURE_NO_WARNINGS#include"contact.h"http://初始化通訊錄void InitContact(struct Contact* pc){ pc->sz = 0;//默認(rèn)沒(méi)有信息 //memset(pc->data, 0, PEOPLE_MAX * sizeof(struct PeoInfo)); memset(pc->data, 0, sizeof(pc->data));}//增加聯(lián)系人void AddContact(struct Contact* pc){ if (pc->sz == PEOPLE_MAX) { printf("通訊錄滿了/n"); } else { printf("請(qǐng)輸入名字:>"); scanf("%s", pc->data[pc->sz].name); printf("請(qǐng)輸入年齡:>"); scanf("%d", &(pc->data[pc->sz].age)); printf("請(qǐng)輸入性別:>"); scanf("%s", pc->data[pc->sz].sex); printf("請(qǐng)輸入電話:>"); scanf("%s", pc->data[pc->sz].tele); printf("請(qǐng)輸入地址:>"); scanf("%s", pc->data[pc->sz].addr); //提示 printf("添加成功!/n"); pc->sz++; }}//顯示所有的聯(lián)系人void ShowContact(struct Contact* pc){ int i = 0; //打印標(biāo)題 (美觀) printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr"); for (i = 0; i < pc->sz; i++) { //打印每個(gè)數(shù)據(jù) printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n", pc->data[i].name, pc->data[i].age, pc->data[i].sex, pc->data[i].tele, pc->data[i].addr ); }}//刪除指定聯(lián)系人int FindContactByName(const struct Contact* pc, const char* name){ int i = 0; for (i = 0; i < pc->sz; i++) { if (strcmp(pc->data[i].name, name) == 0) { return i; } } //找不到 return -1;}void DelContact(struct Contact* pc){ if (pc->sz == 0) { printf("通訊錄為空,無(wú)法刪除!/n"); return; } char name[NAME_MAX] = { 0 }; printf("請(qǐng)輸入要?jiǎng)h除聯(lián)系人的名字:>"); scanf("%s", name); //查找 int pos = FindContactByName(pc, name); if (pos == -1) { printf("指定的聯(lián)系人不存在!/n"); } //刪除 else { int j = 0; for (j = pos; j < pc->sz - 1; j++) { pc->data[j] = pc->data[j + 1]; } pc->sz--; //提示 printf("刪除成功!/n"); }}//查找指定聯(lián)系人void SearchContact(const struct Contact* pc){ char name[NAME_MAX] = { 0 }; printf("輸入要查找的聯(lián)系人的名字:>"); scanf("%s", name); //查找 int pos = FindContactByName(pc, name); if (pos == -1) { printf("查無(wú)此人!/n"); } else { //打印標(biāo)題 (美觀) printf("%15s/t%5s/t%8s/t%15s/t%30s/n/n", "name", "age", "sex", "tele", "addr"); //打印每個(gè)數(shù)據(jù) printf("%15s/t%5d/t%8s/t%15s/t%30s/n/n", pc->data[pos].name, pc->data[pos].age, pc->data[pos].sex, pc->data[pos].tele, pc->data[pos].addr); }}//修改指定聯(lián)系人void ModifyContact(struct Contact* pc){ char name[NAME_MAX] = { 0 }; printf("輸入要修改的聯(lián)系人的名字:>"); scanf("%s", name); //查找 int pos = FindContactByName(pc, name); if (pos == -1) { printf("要修改的聯(lián)系人數(shù)據(jù)不存在!/n"); } else { printf("請(qǐng)輸入新的名字:>"); scanf("%s", pc->data[pos].name); printf("請(qǐng)輸入新的年齡:>"); scanf("%d", &(pc->data[pos].age)); printf("請(qǐng)輸入新的性別:>"); scanf("%s", pc->data[pos].sex); printf("請(qǐng)輸入新的電話:>"); scanf("%s", pc->data[pos].tele); printf("請(qǐng)輸入新的地址:>"); scanf("%s", pc->data[pos].addr); //提示 printf("修改成功!/n"); }}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/120978.html
摘要:結(jié)構(gòu)體類型的特殊聲明在初階結(jié)構(gòu)體中,我們已經(jīng)將了結(jié)構(gòu)體類型是如何進(jìn)行聲明的,那么在這里,我們將講一些特殊的結(jié)構(gòu)體聲明不完全的聲明。所以我們應(yīng)該這樣寫(xiě)通過(guò)指針來(lái)找到下一個(gè)同類型結(jié)構(gòu)體的寫(xiě)法,我們就稱之為結(jié)構(gòu)體的自引用。 ...
摘要:如下面的結(jié)構(gòu)體包含三個(gè)成員,分別是。聯(lián)合體是一種結(jié)構(gòu)。其對(duì)其方式適合其中所有成員。 結(jié)構(gòu)體、枚舉、聯(lián)合體 1.什么是結(jié)構(gòu)體、枚舉、聯(lián)合體2.定義結(jié)構(gòu)體2.1 包含...
摘要:本篇文章將用語(yǔ)言代碼實(shí)現(xiàn)一個(gè)通訊錄管理系統(tǒng),本片文章博主將會(huì)運(yùn)用到架構(gòu)提,枚舉,動(dòng)態(tài)內(nèi)存開(kāi)辟和文件操作等。這里存放數(shù)據(jù)的結(jié)構(gòu)是線性表。這個(gè)指針就可以通過(guò)動(dòng)態(tài)開(kāi)辟內(nèi)存來(lái)調(diào)整存放信息的大小。擴(kuò)容成功這樣就實(shí)現(xiàn)了檢查通訊錄是否需要擴(kuò)容的函數(shù)。 ...
摘要:文章目錄前言前言一建立文件二編寫(xiě)函數(shù)三調(diào)試運(yùn)行四成果展示五代碼匯總總結(jié)前言通訊錄是我們?nèi)粘J謾C(jī)中常見(jiàn)的功能之一,綜合語(yǔ)言中結(jié)構(gòu)體,循環(huán),條件語(yǔ)句,動(dòng)態(tài)內(nèi)存分配等等知識(shí)點(diǎn),我們對(duì)手機(jī)通訊錄進(jìn)行一個(gè)簡(jiǎn)單的實(shí)現(xiàn),下面我們開(kāi)始講解準(zhǔn)備工作利用語(yǔ) 文章目錄 前言一、建立文件二、編寫(xiě)函數(shù)三、調(diào)試運(yùn)...
閱讀 1996·2021-09-30 09:53
閱讀 1841·2021-09-24 09:48
閱讀 1755·2019-08-30 14:01
閱讀 2170·2019-08-29 18:35
閱讀 1249·2019-08-26 18:27
閱讀 2978·2019-08-26 12:12
閱讀 941·2019-08-23 17:16
閱讀 931·2019-08-23 15:31