動態通訊錄

2021-08-04 09:15:15 字數 2350 閱讀 5059

上次實現了靜態版本的通訊錄,雖然能夠初步滿足我們的需求,但總歸還是不夠完美,那麼下面我將次通訊錄的靜態版本改為動態版本。。。這就需要用到動態分配~

所謂動態分配,就是需要的時候再分配,這是相對於靜態分配而言的,靜態分配就是一次分配完畢,不管你用多少。而動態分配則是按需分配。

下面我們來具體實現一下唄~

contact.h

#ifndef __contact_h__

#define __contact_h__

#define max 1000

#define name_max 20

#define ***_max 5

#define tele_max 15

#define adder_max 30

#define default_sz 3//預設大小

#define default_inc 2

#include

#include

#include

#include

typedef struct peoinfo//定義個人資訊結構體

peoinfo;

typedef struct contact

contact, *pcontact;

void initcontact(pcontact pcon);//結構體初始化

void addcontact(pcontact pcon);

int searchcontact(pcontact pcon);

void delcontact(pcontact pcon);

void modifycontact(pcontact pcon);

void showcontact(const pcontact pcon);

void sortcontact(pcontact pcon);

void clearcontact(pcontact pcon);

void destroycontact(pcontact pcon);

#endif

contact.c

//函式實現

#define _crt_secure_no_warnings 1

#include"contact.h"

void

initcontact(pcontact pcon)

memset(pcon->data, 0, default_sz*sizeof(peoinfo));

pcon->capacity = default_sz;

}void

checkcapacity(pcontact pcon)

else

pcon->capacity += default_inc;

printf("增容成功\n");

}}void

destroycontact(pcontact pcon)

void

addcontact(pcontact pcon)

static int findentry(pcontact pcon, char name)//static只在當前檔案使用

}return -1;//沒找到

}int

searchcontact(pcontact pcon)//查詢資訊

else

}void

showcontact(pcontact pcon)

}void

delcontact(pcontact pcon)//刪除聯絡人

else

pcon->sz--;

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

}}void

modifycontact(pcontact pcon)

else

}void

sortcontact(pcontact pcon)}}

printf("%10s\t%5s\t%5s\t%15s\t%20s\n", "name", "***", "age", "tele", "addr");

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

}void

clearcontact(pcontact pcon)

test.c

//函式測試

#define _crt_secure_no_warnings 1

#include"contact.h"

enum

;void menu()

void test()

} while (input);

}int main()

動態通訊錄

動態版通訊錄,是乙個動態增容的過程 自定義標頭檔案部分 ifndef contact h define contact h define max name 20 define max 5 define max tele 12 define max addr 100 define max 1000 d...

動態通訊錄

測試環境 vs2013 ifndef address list h define address list h include include include pragma warning disable 4996 typedef struct a datatype typedef struct a...

動態通訊錄

動態通訊錄 contact.h ifndef contact h define contact h include include include include pragma warning disable 4996 enum option define max name 20 define ma...