#define MAX_NAME 20
#define MAX_PHONE 15
#define MAX_ADDR 50
#define MAX_CONTACTS 1000
typedef struct {
char name[MAX_NAME];
char phone[MAX_PHONE];
char addr[MAX_ADDR];
} Contact;
typedef struct {
Contact contacts[MAX_CONTACTS];
int count; // 當前聯繫人數
} AddressBook;
count = 0,可從文件加載歷史數據。contacts[count++]。count--。strcmp 比對姓名/電話,支持模糊匹配。fwrite(&book, sizeof(AddressBook), 1, fp);(二進制)或逐條 fprintf(文本)。fread 或 fscanf 恢復。int main() {
AddressBook book = {0};
load_from_file(&book); // 啟動時加載
int choice;
while (1) {
print_menu();
scanf("%d", &choice);
switch (choice) {
case 1: add_contact(&book); break;
case 2: del_contact(&book); break;
case 3: search_contact(&book); break;
case 4: modify_contact(&book); break;
case 5: show_all(&book); break;
case 0: save_to_file(&book); return 0;
}
}
}
malloc/realloc 替換固定數組,突破上限。先用固定數組+文本文件跑通流程,理解結構體、文件 IO、字符串處理、菜單循環等基礎知識串聯。再逐步重構為動態版本。