動態實現實現通訊錄,就需要使用malloc和realloc等這些函式,首先我們先來介紹一下這些函式。
(1)void *malloc(unsigned int size);
size是需要分配的位元組數。
(2)void *calloc(unsigned int num_elements,unsigned int elements_size);
num_elements是分配的元素個數,elements_size是每個元素佔的位元組數。
(3)void *realloc(void *p,unsigned int new_size);
new_size是修改後的位元組數,p是原先的記憶體首位址。
由於這些函式都是在堆(heap)裡開闢的空間,使用完後需要釋放,所以就需要free函式。
(4)void free(void *p);
p是需要釋放的空間的首位址。
前邊3個函式都需要free,如果不free就可能造成記憶體洩漏。free釋放完成後需要置為null。我們在使用指標之前必須要有乙個原則,那就是使用之前先判斷是否為空、使用之後需要置為null。
下來我們就來實現動態增長通訊錄。
#define _crt_secure_no_warnings 1
#ifndef __contact_h__
#define __contact_h__
#include #include enum op
;#define name_max 20
#define ***_max 5
#define tele_max 12
#define addr_max 25
#define max 1000
#define max_init 2
#define max_rise 2
typedef struct perinfo
peoinfo;
typedef struct contact
contact,*pcon;
void init_contact(pcon pcon);
void _add_contact(pcon pcon);
void _display_contact(pcon pcon);
void _del_contact(pcon pcon);
void _search_contact(pcon pcon);
void _modify_contact(pcon pcon);
void _sort_contact(pcon pcon);
void _clear_contact(pcon pcon);
#endif //__contact_h__
#define _crt_secure_no_warnings 1
#include "contact.h"
////git
//svn
//void init_contact(pcon pcon)
pcon->size=0;
pcon->capacity=max_init;
}void _add_contact(pcon pcon)
*/if(pcon->size >= pcon->i)
else
printf("請輸入名字:>");
scanf("%s",pcon->data[pcon->size].name);
printf("請輸入年齡:>");
scanf("%d",&(pcon->data[pcon->size].age));
printf("請輸入性別:>");
scanf("%s",pcon->data[pcon->size].***);
scanf("%s",pcon->data[pcon->size].tele);
scanf("%s",pcon->data[pcon->size].addr);
pcon->size++;
printf("新增成功\n");
}void _display_contact(pcon pcon)
}static int find_entry(pcon pcon, char *name)
}return -1;
}void _del_contact(pcon pcon)
printf("請輸入要刪除人的名字:>");
scanf("%s",name);
pos = find_entry(pcon, name);
if(pos == -1)
//for(index = pos; index < pcon->size; index++)
pcon->size--;
printf("刪除成功\n");
}void _search_contact(pcon pcon)
;int pos = 0;
printf("請輸入要查詢人的名字:>");
scanf("%s",name);
pos = find_entry(pcon, name);
if(pos == -1)
else
}void _modify_contact(pcon pcon)
;int pos = 0;
printf("請輸入要修改人的名字:>");
scanf("%s",name);
pos = find_entry(pcon, name);
if(pos == -1)
else
}//volatile
void _sort_contact(pcon pcon)
;tmp = pcon->data[j];
pcon->data[j] = pcon->data[j+1];
pcon->data[j+1] = tmp;}}
}}void _clear_contact(pcon pcon)
動態實現通訊錄
動態實現,借用之前以及寫好的通訊錄 在結構體內新增柔性陣列 主要是柔性陣列的使用 int i 0 list p list malloc sizeof list 100 sizeof int p i 100 for i 0 i 100 i include include include include...
動態通訊錄的實現
contact.h ifndef contact h define contact h enum option include include include include define name max 20 define max 5 define age max 3 define tel ma...
通訊錄的實現
ifndef contacts h define contacts h define name length 20 define length 10 define tele length 11 define addr length 30 define max 1000 struct peoplein...