C 語言初學教材 - 第六章 設計自己的標頭檔






































C 語言初學教材 - 第六章 設計自己的標頭檔






我們已經陸陸續續發展許多不同功能的程式,包括有關登入程式、帳號管理、通訊錄資料等的相關處理,有些已經寫成可以直接應用的函數,現在是時候把這三個程式模組整合在一起了。整合的方式,說來也簡單,我們自己設計自己的標頭檔,把引入標準函數庫常數定義、結構定義、函數原型的宣告都放在標頭檔之中。



所謂的標頭檔也就是另一個 .h 的檔案,以下為標頭檔的內容
#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);

/* 《程式語言:教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:itm.h
功能:整合程式模組的標頭檔
作者:張凱慶
時間:西元2010年7月 */



我們把登入程式的部份移出函數 main() ,另寫一個 login() 處理登入事項, myTimeS() 轉換時間格式, sayHello() 印出現在時間,也向使用者說哈囉。


若是使用者以管理員帳號登入,在 login() 裡呼叫 manage() 進行管理帳號的工作,這裡相關的函數我們都已經看過。


若是使用者以註冊的帳號成功登入,也就是帳號與密碼相符, login() 便呼叫 frienddata() 進行通訊錄資料的處理,這裡另有 prompt() 專門印出提示訊息,然後回傳使用者的選項。


函數定義放在實作檔中,我們也需要另一個含有 main() 的執行檔,請繼續參考



問題與討論

  1. 有哪些東西放在標頭檔裡頭?

  2. 又有哪些東西放在實作檔當中?















1 則留言:







周小賢
提到...



您好,請問為什麼標頭檔內只放入函數的原型宣告,而不將函數本身也放進去呢?





















window.___gcfg = { 'lang': 'zh-TW' };





Popular posts from this blog

迅雷 Thunder 7.9.43.5054 免安裝版 (9.1.41.914 安裝版) - 支援BT下載的萬用 檔案下載工具

qBittorrent 4.1.1 免安裝中文版 - 取代uTorrent的BT下載器

嘸蝦米輸入法免安裝版 1.0.13.589 - 唯一只用英文字母輸入的中文輸入法