所謂的標頭檔也就是另一個 .h 的檔案,以下為標頭檔的內容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define SIZE 100 #define LEN 20 #define NAME_SIZE 15 enum state {EXIT, RUN, WRONG_NAME, WRONG_CODE, Y, N}; // 自訂的時間格式 struct my_tm { int year; int month; int day; int hour; int isam; int hourt; int min; int sec; }; // 記錄好友資料的結構 struct friendData { char name[NAME_SIZE]; int age; int sex; int relation; }; // 暫存在記憶體中的資料結構:鏈結串列 struct linkedListNode { struct friendData data; struct linkedListNode *nextPtr; }; typedef struct my_tm My_Time; typedef struct linkedListNode LinkedListNode; // 登入程式模組的函數原型 void login( void ); My_Time myTimeS( time_t seconds); void sayHello(My_Time *tPtr, char *name); // 管理帳號模組的函數原型 int manage( int counter, char id[][LEN], char code[][LEN]); void printList( char id[][LEN], char code[][LEN]); void si( char id[][LEN], char code[][LEN]); int ssearch( char array[][LEN], int size, char *target); int di( int counter, char id[][LEN], char code[][LEN]); int so( char id[][LEN], char code[][LEN]); void ssort( char array[][LEN], char code[][LEN], int size); // 通訊錄模組的函數原型 void frienddata( char *name); int prompt( void ); void addfriend(LinkedListNode **startPtr); void printList2(LinkedListNode *currentPtr); /* 《程式語言:教學誌》的範例程式 檔名:itm.h 功能:整合程式模組的標頭檔 作者:張凱慶 時間:西元2010年7月 */ |
我們把登入程式的部份移出函數 main() ,另寫一個 login() 處理登入事項, myTimeS() 轉換時間格式, sayHello() 印出現在時間,也向使用者說哈囉。
若是使用者以管理員帳號登入,在 login() 裡呼叫 manage() 進行管理帳號的工作,這裡相關的函數我們都已經看過。
若是使用者以註冊的帳號成功登入,也就是帳號與密碼相符, login() 便呼叫 frienddata() 進行通訊錄資料的處理,這裡另有 prompt() 專門印出提示訊息,然後回傳使用者的選項。
函數定義放在實作檔中,我們也需要另一個含有 main() 的執行檔,請繼續參考
問題與討論
- 有哪些東西放在標頭檔裡頭?
- 又有哪些東西放在實作檔當中?
1 則留言:
您好,請問為什麼標頭檔內只放入函數的原型宣告,而不將函數本身也放進去呢?
張貼留言