日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言通讯录文件存储位置,c语言实现通讯录(存入文件)

發(fā)布時(shí)間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言通讯录文件存储位置,c语言实现通讯录(存入文件) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

#include //靜態(tài)方法初始化

//void InitContact(Contact *pcon)

//{

//assert(pcon != NULL);

//pcon->sz = 0;

//memset(pcon->data, 0, sizeof(pcon->data));

//}

//動(dòng)態(tài)方法初始化

void InitContact(Contact *pcon)

{

assert(pcon != NULL);

pcon->sz = 0;

pcon->data = (Info*)malloc(3 * sizeof(Info));

if (pcon->data == NULL)

{

perror("InitContact::use malloc");

exit(EXIT_FAILURE);//退出程序

}

pcon->capacity = 3;

//加載文件中的保存信息

LoadContact(pcon);

}

void DestroyContact(Contact *pcon)

{

assert(pcon != NULL);

pcon->sz = 0;

pcon->capacity = 0;

free(pcon->data);

pcon->data = NULL;

}

int Check_Capacity(Contact *pcon)

{

assert(pcon);

if (pcon->capacity == pcon->sz)

{

//擴(kuò)容

Info *ptr=realloc(pcon->data, (pcon->capacity + 2)*sizeof(Info));

if (ptr != NULL)

{

pcon->data = ptr;

printf("增容成功!");

return 1;

}

}

return 1;

}

void AddContact(Contact *pcon)

{

assert(pcon != NULL);

/*if (pcon->sz == MAX)

{

printf("通訊錄已滿,無法添加!\n");

}*/

if (0 == Check_Capacity(pcon))

{

printf("增容失敗,無法添加");

return;

}

else

{

printf("請(qǐng)輸入名字:> ");

scanf("%s", pcon->data[pcon->sz].name);

printf("請(qǐng)輸入年齡:> ");

scanf("%d", &(pcon->data[pcon->sz].age));

printf("請(qǐng)輸入性別:> ");

scanf("%s", pcon->data[pcon->sz].sex);

printf("請(qǐng)輸入電話:> ");

scanf("%s", pcon->data[pcon->sz].tele);

printf("請(qǐng)輸入地址;> ");

scanf("%s", pcon->data[pcon->sz].addr);

pcon->sz++;

}

}

void ShowContact(const Contact* pcon)

{

int i = 0;

//名字 年齡 性別 電話 地址

//張三 20 男 123 西安

printf("%10s\t%4s\t%4s\t%12s\t%15s\n", "名字", "年齡", "性別", "電話", "地址");

for (i = 0; i < pcon->sz; i++)

{

printf("%10s\t%4d\t%4s\t%12s\t%15s\n",

pcon->data[i].name,

pcon->data[i].age,

pcon->data[i].sex,

pcon->data[i].tele,

pcon->data[i].addr);

//打印一個(gè)人的信息

}

}

static int Find(Contact *pcon, char name[])

{

int i = 0;

for (i = 0; i < pcon->sz; ++i)

{

if (0 == strcmp(pcon->data[i].name, name))

{

return i;

}

}

return -1;

}

void DelContact(Contact *pcon)

{

int i = 0;

int j = 0;

int ret = 0;

char name[MAX_Name] = { 0 };

printf("請(qǐng)輸入要?jiǎng)h除的人的名字:> ");

scanf("%s", &name);

if (pcon->sz == 0)

{

printf("通訊錄已空,無法刪除!\n");

return;

}

ret = Find(pcon, name);

if (ret==-1)

{

printf("要?jiǎng)h除的人不存在!\n");

return;

}

if (ret != -1 && ret <= pcon->sz)

{

//刪除

for (j = ret; j < pcon->sz - 1; ++j)

{

pcon->data[j] = pcon->data[j + 1];

}

}

pcon->sz--;

printf("刪除成功!\n");

}

void SearchContact(const Contact *pcon)

{

int pos = 0;

char name[MAX_Name] = { 0 };

assert(pcon != NULL);

printf("請(qǐng)輸入要查找的人的名字:> ");

scanf("%s", &name);

pos = Find(pcon, name);

if (pos == -1)

{

printf("要查找的人的信息不存在!\n");

}

else if (pos != -1)

{

printf("%10s\t%4s\t%4s\t%12s\t%15s\n", "名字", "年齡", "性別", "電話", "地址");

printf("%10s\t%4d\t%4s\t%12s\t%15s\n",

pcon->data[pos].name,

pcon->data[pos].age,

pcon->data[pos].sex,

pcon->data[pos].tele,

pcon->data[pos].addr);//打印一個(gè)人的信息

}

else

printf("要查找的人不存在!\n");

}

void ModifyContact(Contact *pcon)

{

char name[MAX_Name] = { 0 };

int pos = 0;

assert(pcon != NULL);

printf("請(qǐng)輸入要修改的人的名字:> ");

scanf("%s", &name);

pos = Find(pcon, name);

if (pos == -1)

printf("要修改的人的信息不存在!\n");

else

{

printf("請(qǐng)輸入名字:");

scanf("%s", pcon->data[pos].name);

printf("請(qǐng)輸入年齡:");

scanf("%d", &(pcon->data[pos].age));

printf("請(qǐng)輸入性別:");

scanf("%s", pcon->data[pos].sex);

printf("請(qǐng)輸入電話:");

scanf("%s", pcon->data[pos].tele);

printf("請(qǐng)輸入地址:");

scanf("%s", pcon->data[pos].addr);

}

}

void SortContact(Contact *pcon)//冒泡排序

{

int i = 0;

int j = 0;

assert(pcon != NULL);

for (i = 0; i < pcon->sz; ++i)

{

int flag = 1;//表示已經(jīng)排好

for (j = 0; j < pcon->sz - 1; ++j)

{

if (strcmp(pcon->data[j].name, pcon->data[j + 1].name)>0)

{

Info tmp = pcon->data[j];

pcon->data[j] = pcon->data[j + 1];

pcon->data[j + 1] = tmp;

}

}

if (flag == 1)

{

printf("已經(jīng)排好了!\n");

break;

}

}

}

void EmptyContact(Contact *pcon)

{

pcon->sz = 0;

printf("清空成功!!\n");

}

void SaveContact(Contact *pcon)

{

FILE *pf = fopen("contact.data", "wb");

int i = 0;

if (pf == NULL)

{

perror("fopen");

return;

}

//寫數(shù)據(jù)

for (i = 0; i < pcon->sz; i++)

{

fwrite(&(pcon->data[i]), sizeof(Info), 1, pf);

}

fclose(pf);

pf = NULL;

}

void LoadContact(Contact *pcon)

{

FILE* pf = fopen("contact.data", "rb");

Info tmp = { 0 };

if (pf == NULL)

{

perror("LoadContact::fopen");

return;

}

//讀文件

while (fread(&tmp, sizeof(Info),1,pf)>=1)

{

//將讀取到的元素放在通訊錄中

Check_Capacity(pcon);

pcon->data[pcon->sz] = tmp;

pcon->sz++;

}

fclose(pf);

pf = NULL;

}

總結(jié)

以上是生活随笔為你收集整理的c语言通讯录文件存储位置,c语言实现通讯录(存入文件)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。