可以儲存1000人的資訊,
個人資訊包括姓名、**、住址、年齡、性別。
提供方法:
1、新增聯絡人資訊
2、刪除指定聯絡人資訊
3、查詢指定聯絡人資訊
4、修改指定聯絡人資訊
5、顯示所有聯絡人資訊
6、清空所有聯絡人資訊
7、以名字排序所有聯絡人
1、從檔案讀取和向檔案寫入資訊
fopen、fclose、fscanf、fprintf
2、動態開闢空間儲存聯絡人資訊
malloc、realloc、free
3、新增按位址排序
offsetof、qsort、strcmp
4、轉移表
函式指標陣列
tel.h
#ifndef __tel_h__
#define __tel_h__
#include
#include
#include
#include
#include
#include
#include
#define name 20
#define *** 5
#define phone 11
#define address 20
#define expansion 5
struct contact
;struct addressbook
;void init_addressbook(struct addressbook* );
void read_file(struct addressbook*, file*);
void add_contact(struct addressbook*);
void delete_contact(struct addressbook*);
void lookup_contact(struct addressbook*);
void modify_contact(struct addressbook*);
void show_contact(struct addressbook*);
void empty_contact(struct addressbook*);
void sort_contact(struct addressbook*);
void write_file(struct addressbook*, file*);
#endif //__tel_h__
text.c#define _crt_secure_no_warnings 1
#include "tel.h"
void menu()
int main()
; //上面是乙個轉移表——函式指標陣列的定義和賦值
unsigned
int input = 0;
do while (input);
stream = fopen("text.txt", "w");
write_file(&list, stream);
fclose(stream);
free(list.contacts);
list.contacts = null;
return
0;}
maillist.c#define _crt_secure_no_warnings 1
#include "tel.h"
void read_file(struct addressbook* plist, file* stream)
int i;
for (i=0; i < plist->num; i++)
}void init_addressbook(struct addressbook* plist)
static
struct contact* find_contact(struct addressbook* plist)
; printf("please enter name >:\n");
scanf("%s", name);
for (i = 0; i < plist->sz; i++)
return null;
}static
void expand(struct addressbook* plist)
void empty_contact(struct addressbook* plist)
void add_contact(struct addressbook* plist)
printf("please enter name >:\n");
scanf("%s", plist->contacts[plist->sz].name);
printf("please enter *** >:\n");
scanf("%s", plist->contacts[plist->sz].***);
printf("please enter age >:\n");
scanf("%d", &plist->contacts[plist->sz].age);
printf("please enter phone number >:\n");
scanf("%s", plist->contacts[plist->sz].phone);
printf("please enter address >:\n");
scanf("%s", plist->contacts[plist->sz].address);
plist->sz++;
}void delete_contact(struct addressbook* plist)
int i = (char*)(&plist->contacts[plist->sz]) - (char*)con;
char* dest = (char*)con;
char* src = (char*)(con + 1);
while (i--)
plist->sz--;
}void lookup_contact(struct addressbook* plist)
printf("%-20s%-10s%-10s%-15s%-20s\n", \
"name", "***", "age", "phone", "address");
printf("%-20s%-10s%-10d%-15s%-20s\n", con->name, \
con->***, con->age, con->phone, con->address);
}void modify_contact(struct addressbook* plist)
else
}void show_contact(struct addressbook* plist)
printf("%-20s%-10s%-10s%-15s%-20s\n",\
"name", "***", "age", "phone", "address");
int i;
for (i = 0; i < plist->sz; i++)
}void empt_contact(struct addressbook* plist)
static
int compare_name(const
void* name1, const
void* name2)
static
int compare_address(const
void* name1, const
void* name2)
void sort_contact(struct addressbook* plist)
void write_file(struct addressbook* plist, file* stream)
}
C語言通訊錄小專案
include include include include 定義節點 struct node 建立頭節點 int init struct node pheader return 0 bzero pnode,sizeof struct node 清理堆空間 pnode name 20 對於字元陣列...
C語言小專案 通訊錄
通訊錄全部採用c語言實現,用鍊錶實現增加 刪除 修改 查詢等功能,還有命令解析函式 將輸入分解成主命令 姓名 聯絡人資訊是儲存在檔案中,每次程式執行和結束時都會讀取檔案中的資訊。節點裡定義的都是指標,增加新節點時要開闢新的記憶體,刪除節點時要記得及時釋放記憶體,防止記憶體溢位。標頭檔案 標頭檔案中是...
C語言小專案 通訊錄系統
專案要求 實現乙個通訊錄 通訊錄可以用來儲存1000個人的資訊,每個人的資訊包括 姓名 性別 年齡 住址 提供方法 新增聯絡人資訊 刪除指定聯絡人資訊 查詢指定聯絡人資訊 修改指定聯絡人資訊 顯示所有聯絡人資訊 清空所有聯絡人 以名字排序所有聯絡人 這個系統我們分為三個部分來實現 contact.h...