◎ 標準函數 標準函數庫中,提供了許多不同功能的函數,而這些函數 的原型宣告以及使用函數相關的定義,依照相關函數的分 類,分別定義在不同的標頭檔之中。 標準函數庫中,提供了許多不同功能的函數,而這些函數 的原型宣告以及使用函數相關的定義,依照相關函數的分 類,分別定義在不同的標頭檔之中。 本來呼叫使用標準函數庫裡的函數,也就是使用模組裡的 函數,是不需要引入其函數的原型宣告的,編譯器會自動 連結( link )不同模組間的函數,使其正常的執行 本來呼叫使用標準函數庫裡的函數,也就是使用模組裡的 函數,是不需要引入其函數的原型宣告的,編譯器會自動 連結( link )不同模組間的函數,使其正常的執行 如果事先宣告函數的原型,在編譯時,編譯器會依照它的 原型檢查呼叫函數的引數個數、型態與傳回值的型態,事 先發現錯誤,這是宣告原型的好處。 如果事先宣告函數的原型,在編譯時,編譯器會依照它的 原型檢查呼叫函數的引數個數、型態與傳回值的型態,事 先發現錯誤,這是宣告原型的好處。 如果呼叫函數時需先使用其相關定義宣告一些資料,若沒 引入標頭檔就會有未定義的情形而無法編譯,所以還是養 成使用到那個函數,就先引入那個函數所屬的標頭檔。 如果呼叫函數時需先使用其相關定義宣告一些資料,若沒 引入標頭檔就會有未定義的情形而無法編譯,所以還是養 成使用到那個函數,就先引入那個函數所屬的標頭檔。
時間與日期函數 C 語言中常用的時間與日期函數列表如下: C 語言中常用的時間與日期函數列表如下: 函數名稱說明C標頭檔C++標頭檔 time取得目前時間的秒數time.hctime ctime取得指定秒數之日期與時間字串time.hctime gmtime取得指定時間秒數之格林威治時間資料time.hctime localtime取得指定時間秒數之時間資料time.hctime clock取得程式開始執行後的震盪滴答次數time.hctime
time 取得目前時間之秒數 【函數原型】 time_t time(time_t *tp); 【函數原型】 time_t time(time_t *tp); 【標 頭 檔】 【標 頭 檔】 【說 明】取得目前時間之秒數。 【說 明】取得目前時間之秒數。 【傳入參數】 tp 為指定存放總秒數的長整數 位址,若不需要可傳入 NULL 。 【傳入參數】 tp 為指定存放總秒數的長整數 位址,若不需要可傳入 NULL 。 【傳 出 值】目前的秒數。 【傳 出 值】目前的秒數。
ctime 取得指定秒數之日期與時間字串 【函數原型】 char* ctime(const time_t *tp); 【函數原型】 char* ctime(const time_t *tp); 【標 頭 檔】 【標 頭 檔】 【說 明】將 time_t 型態的總秒數 tp ,轉換 成日期與時間字串,格式如同 Sun Mar 09 21:31: 並且 加上換行符號。 【說 明】將 time_t 型態的總秒數 tp ,轉換 成日期與時間字串,格式如同 Sun Mar 09 21:31: 並且 加上換行符號。 【傳入參數】 tp 為以 time 函數取得總秒數之變 數位址。 【傳入參數】 tp 為以 time 函數取得總秒數之變 數位址。 【傳 出 值】換算之日期與時間字串的字元陣 列起始位址。 【傳 出 值】換算之日期與時間字串的字元陣 列起始位址。
gmtime -- 取得指定時間秒數之格林威治時間資料 【函數原型】 struct tm* gmtime(const time_t *tm); 【函數原型】 struct tm* gmtime(const time_t *tm); 【標 頭 檔】 【標 頭 檔】 【說 明】傳回指定時間秒數 tm 格林威治時 間之結構指標。 【說 明】傳回指定時間秒數 tm 格林威治時 間之結構指標。 【傳入參數】指定 time_t 型態之時間秒數 tp 的 位址。 【傳入參數】指定 time_t 型態之時間秒數 tp 的 位址。 【傳 出 值】格林威治時間資料之結構位址。 【傳 出 值】格林威治時間資料之結構位址。
Localtime -- 取得指定時間秒數之時間資料 【函數原型】 struct tm* localtime(const time_t *tm); 【函數原型】 struct tm* localtime(const time_t *tm); 【標 頭 檔】 【標 頭 檔】 【說 明】傳回指定時間秒數 tm 本地時間之 結構指標。 【說 明】傳回指定時間秒數 tm 本地時間之 結構指標。 【傳入參數】指定 time_t 型態時間秒數 tm 的位 址。 【傳入參數】指定 time_t 型態時間秒數 tm 的位 址。 【傳 出 值】系統中本地時間資料之結構位 址。 【傳 出 值】系統中本地時間資料之結構位 址。
clock -- 取得程式開始執行後的震盪滴答次數 【函數原型】 clock_t clock(void); 【函數原型】 clock_t clock(void); 【標 頭 檔】 【標 頭 檔】 【說 明】取得程式開始執行後的震盪滴答 ticks 次數。 【說 明】取得程式開始執行後的震盪滴答 ticks 次數。 【傳入參數】無。 【傳入參數】無。 【傳 出 值】震盪滴答 ticks 次數。 【傳 出 值】震盪滴答 ticks 次數。
亂數函數 常用的亂數函數列表如下: 常用的亂數函數列表如下: 函數名稱說明C標頭檔C++標頭檔 rand取得亂數值stdlib.h cstdlib srand設定亂數的種子stdlib.h
rand 取得亂數值 【函數原型】 int rand(void); 【函數原型】 int rand(void); 【標 頭 檔】 【標 頭 檔】 【說 明】呼叫後會傳回 0 ~ RAND_MAX 的 亂數值。 【說 明】呼叫後會傳回 0 ~ RAND_MAX 的 亂數值。 【傳入參數】無。 【傳入參數】無。 【傳 出 值】介於 0 ~ 的亂數值。 【傳 出 值】介於 0 ~ 的亂數值。
srand 設定亂數的種子 【函數原型】 void srand(unsigned int nseed); 【函數原型】 void srand(unsigned int nseed); 【標 頭 檔】 【標 頭 檔】 【說 明】以 nseed 為亂數種子,來設定 rand 函數所產生亂數 【說 明】以 nseed 為亂數種子,來設定 rand 函數所產生亂數 【傳入參數】 nseed 亂數種子值。 【傳入參數】 nseed 亂數種子值。 【傳 出 值】無。 【傳 出 值】無。
數學計算函數 (1/3) 函數名稱說明C標頭檔C++標頭檔 abs取得整數的絕對值stdlib.hcstdlib labs取得長整數的絕對值stdlib.hcstdlib fabs取得浮點數的絕對值math.hcmath cabs取得複數的絕對值math.hcmath hypot計算直角三角形的斜邊長math.hcmath div取得整數相除後的商與餘數stdlib.hcstdlib ldiv取得長整數相除之後的商與餘數stdlib.hcstdlib fmod取得倍精度浮點數相除後之餘數math.hcmath floor取得小於等於指定數之最大整數math.hcmath
數學計算函數 (2/3) 函數名稱說明C標頭檔C++標頭檔 ceil取得大於等於指定數之最小整數math.hcmath modf分解浮點數為整數與小數部份math cmath sin計算指定弳度量的正弦值math.hcmath cos計算指定弳度量的餘弦值math.hcmath tan計算指定弳度量的正切值math.hcmath asin 計算指定值的反正弦值( csc 值) math.hcmath acos 計算指定值的反餘弦值( sec 值) math.hcmath atan 計算指定值的反正切值( cot 值) math.hcmath sinh計算指定值的雙曲線正弦值math.hcmath
數學計算函數 (3/3) 函數名稱說明C標頭檔C++標頭檔 cosh計算指定值的雙曲線餘弦值math.hcmath tanh計算指定值的雙曲線正切值math.hcmath atan2計算斜率比值的反正切值math.hcmath exp計算指定值的自然指數值math.hcmath pow計算指定值的指定指數值math.hcmath log計算指定值之自然對數值math.hcmath log10 計算指定值以 10 為底之對數值 math.hcmath sqrt計算非負數之平方根值math.hcmath
字元測試函數 (1/2) 函數名稱說明C標頭檔C++標頭檔 isalnum是否為英文字母或數字ctype.hcctype isalpha是否為英文字母ctype.hcctype isascii 是否在有效 ASCII 碼範圍 ctype.hcctype iscntrl是否為控制字元ctype.hcctype isspace是否為空白字元ctype.hcctype isgraph是否為繪圖字元ctype.hcctype
字元測試函數 (2/2) 函數名稱說明C標頭檔C++標頭檔 isprint是否為可列印字元ctype.hcctype isupper是否為大寫英文字母ctype.hcctype islower是否為小寫英文字母ctype.hcctype ispunct是否為標點符號字元ctype.hcctype isdigit是否為十進制數字ctype.hcctype isxdigit 是否為 16 進制數字 ctype.hcctype
型態轉換函數 常用的型態轉換函數列表如下: 常用的型態轉換函數列表如下: 函數名稱說明C標頭檔C++標頭檔 toascii 將數值轉換到 ASCII 碼範圍內 ctype.hcctype toupper將小寫英文字母轉換為大寫ctype.hcctype tolower將大寫英文字母轉換為小寫ctype.hcctype atoi將字串轉換為整數stdlib.hcstdlib atol將字串轉換為長整數stdlib.hcstdlib atof將字串轉換為倍精度浮點數stdlib.hcstdlib itoa將整數轉換為字串stdlib.hcstdlib ltoa將長整數轉換為字串stdlib.hcstdlib
atoi 將字串轉換為整數 【函數原型】 int atoi( const char* szNumber ) ; 【函數原型】 int atoi( const char* szNumber ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】將傳入以字串型態儲存的整數數 字 szNumber ,轉換為整數型態。 【說 明】將傳入以字串型態儲存的整數數 字 szNumber ,轉換為整數型態。 【傳入參數】 szNumber 為欲轉換為整數型態的 字串型態之整數數字,只轉換到能 成功轉換為整數的部份。 【傳入參數】 szNumber 為欲轉換為整數型態的 字串型態之整數數字,只轉換到能 成功轉換為整數的部份。 【傳 出 值】轉換後之整數值。 【傳 出 值】轉換後之整數值。
atol 將字串轉換為長整數 【函數原型】 long atol( const char* szNumber ) ; 【函數原型】 long atol( const char* szNumber ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】將傳入以字串型態儲存的長整數數 字 szNumber ,轉換為長整數型 態。 【說 明】將傳入以字串型態儲存的長整數數 字 szNumber ,轉換為長整數型 態。 【傳入參數】 szNumber 為欲轉換為長整數型態 的字串型態之長整數數字,只轉換 到能成功轉換為長整數的部份。 【傳入參數】 szNumber 為欲轉換為長整數型態 的字串型態之長整數數字,只轉換 到能成功轉換為長整數的部份。 【傳 出 值】轉換後之長整數值。 【傳 出 值】轉換後之長整數值。
atof 將字串轉換為倍精度浮點 數 【函數原型】 double atof( const char* szNumber ) ; 【函數原型】 double atof( const char* szNumber ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】將傳入以字串型態儲存的浮點數數字 szNumber ,轉換為浮點數型態。 【說 明】將傳入以字串型態儲存的浮點數數字 szNumber ,轉換為浮點數型態。 【傳入參數】 szNumber 為欲轉換為浮點數型態的字 串型態之浮點數數字,只轉換到能成 功轉換為浮點數的部份。 【傳入參數】 szNumber 為欲轉換為浮點數型態的字 串型態之浮點數數字,只轉換到能成 功轉換為浮點數的部份。 【傳 出 值】轉換後之浮點數值。 【傳 出 值】轉換後之浮點數值。
itoa 將整數轉換為字串 【函數原型】 char* itoa( int nValue, char* sz, int nRadix ) ; 【函數原型】 char* itoa( int nValue, char* sz, int nRadix ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】將指定整數型態的整數 nValue ,轉 換成以 nRadix 為進制的數字(限 2 ~ 36 進制),放到 sz 所指向的字串 位址中。 【說 明】將指定整數型態的整數 nValue ,轉 換成以 nRadix 為進制的數字(限 2 ~ 36 進制),放到 sz 所指向的字串 位址中。 【傳入參數】 nValue 為欲轉換為字串的整數。 【傳入參數】 nValue 為欲轉換為字串的整數。 【傳 出 值】轉換後數字之字元指標,即 sz 的位 址。 【傳 出 值】轉換後數字之字元指標,即 sz 的位 址。
ltoa 將長整數轉換為字串 【函數原型】 char* itoa( long lnValue, char* sz, int nRadix ) ; 【函數原型】 char* itoa( long lnValue, char* sz, int nRadix ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】將指定長整數型態的整數 lnValue ,轉換成以 nRadix 為進制的 數字(限 2 ~ 36 進制),放到 sz 所指 向的字串位址中。 【說 明】將指定長整數型態的整數 lnValue ,轉換成以 nRadix 為進制的 數字(限 2 ~ 36 進制),放到 sz 所指 向的字串位址中。 【傳入參數】 lnValue 為欲轉換為字串的長整數。 【傳入參數】 lnValue 為欲轉換為字串的長整數。 【傳 出 值】轉換後數字之字元指標,即 sz 的位 址。 【傳 出 值】轉換後數字之字元指標,即 sz 的位 址。
字串輸出入函數 函數名稱說明標頭檔 sprintf將指定格式之資料放到字串中stdio.h sscanf由字串中讀取資料存放到變數中stdio.h
字串處理函數 (1/2) 函數名稱說明C標頭檔C++標頭檔 strcat連接二字串的內容string.h cstring strncat連接指定字元數的字串到另一個string.h strchr搜尋字串中第一個指定的字元string.h strrchr搜尋字串中最後一個指定的字元string.h strstr搜尋字串中指定字串第一次出現的位置string.h strspn 搜尋計算字串中包含指定字串任何字元 之起始字元數 string.h cstring strcspn 由起始位置搜尋計算字串中完全包含指 定字串任何字元之字元數 string.h cstring strpbrk 由起始位置搜尋計算字串中完全不包含 指定字串任何字元之字元數 string.h cstring strcpy複製字串的內容string.h
字串處理函數 (2/2) 函數名稱說明C標頭檔C++標頭檔 strncpy複製字串中指定個數的字元string.h cstring strcmp 依 ASCII 值比較字串的內容 string.h cstring strcmpistricmp 依 ASCII 值但不計大小寫比較字串的內容 string.h cstring strncmp比較字串中指定個數的字元string.h strnicmp 不計大小寫比較字串中前 n 個字元 string.h cstring strlen不計結尾符號計算字串的長度string.h strlwr將字串內容全部轉為小寫string.h strupr將字串內容全部轉為大寫string.h strrev將字串的內容倒置string.h strset設定字串的內容為指定的字元string.h strnset 設定字串前 n 個字元的內容為指定的字元 string.h cstring
程式流程控制與其他函數 函數名稱說明C標頭檔C++標頭檔 abort以不正常的方式終止程式的執行stdlib.h cstdlib exit正常結束程式的執行stdlib.h atexit登記程式正常結束前執行的函數stdlib.h system執行系統的指令stdlib.h getenv取得系統中指定的環境變數內容stdlib.h putenv設定系統的環境變數stdlib.h qsort以快速排序法排序指定的資料stdlib.h bsearch以二元搜索法搜尋指定的資料stdlib.h kbhit檢查是否有由鍵盤輸入資料conio_mingw.h
abort 以不正常的方式終止程式的執 行 【函數原型】 void abort( void ) ; 【函數原型】 void abort( void ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】以不正常的方式強迫程式馬上停 止執行。 【說 明】以不正常的方式強迫程式馬上停 止執行。 【傳入參數】無。 【傳入參數】無。 【傳 出 值】無。 【傳 出 值】無。
Exit 正常直接結束程式的執行 【函數原型】 void exit( int nStatus ) ; 【函數原型】 void exit( int nStatus ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】以正常的方式結束程式的執行, 程式結束前會先把檔案緩衝區的 資料寫回檔案中,再關閉檔案, 並且程式結束前會呼叫 atexit 所登 記,程式結束前執行的函數。 【說 明】以正常的方式結束程式的執行, 程式結束前會先把檔案緩衝區的 資料寫回檔案中,再關閉檔案, 並且程式結束前會呼叫 atexit 所登 記,程式結束前執行的函數。 【傳入參數】 nStatus 值為傳遞給上一個呼叫母 程序的值 【傳入參數】 nStatus 值為傳遞給上一個呼叫母 程序的值 【傳 出 值】無。 【傳 出 值】無。
atexit 登記程式正常結束前執行的函 數 【函數原型】 int atexit( void (*pfuncExitProcessing)(void) ) ; 【函數原型】 int atexit( void (*pfuncExitProcessing)(void) ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】登記程式正常執束前會執行的函數, 在 atexit 原型宣告括號中的 void (*pfuncExitProcessing)(void) ,是函 數指標的原型宣告,其為無傳入參數 與傳出值的型式,使用 atexit 函數時 直接把函數名稱放到括號內即可。 【說 明】登記程式正常執束前會執行的函數, 在 atexit 原型宣告括號中的 void (*pfuncExitProcessing)(void) ,是函 數指標的原型宣告,其為無傳入參數 與傳出值的型式,使用 atexit 函數時 直接把函數名稱放到括號內即可。
system 執行系統的指令 【函數原型】 int system( const char* szCommand ) ; 【函數原型】 int system( const char* szCommand ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】執行指定作業系統的指令 szCommand 。 【說 明】執行指定作業系統的指令 szCommand 。 【傳入參數】 szCommand 為指定執行作業系統的 指令。 【傳入參數】 szCommand 為指定執行作業系統的 指令。 【傳 出 值】 0 為執行成功, -1 為執行失敗。 【傳 出 值】 0 為執行成功, -1 為執行失敗。
kbhit 檢查是否有由鍵盤輸入資料 【函數原型】 int kbhit( void ) ; 【函數原型】 int kbhit( void ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】檢查是否有由鍵盤輸入資料。 【說 明】檢查是否有由鍵盤輸入資料。 【傳入參數】無。 【傳入參數】無。 【傳 出 值】 0 為無鍵盤輸入的情形,非 0 值則 有。 【傳 出 值】 0 為無鍵盤輸入的情形,非 0 值則 有。
getenv 取得系統中指定的環境變數內 容 【函數原型】 char* getenv( const char* szVarName ) ; 【函數原型】 char* getenv( const char* szVarName ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】取得系統中指定名稱 szVarName 之環境變數的內容。 【說 明】取得系統中指定名稱 szVarName 之環境變數的內容。 【傳入參數】 szVarName 為指定找尋系統中環 境變數的名稱。 【傳入參數】 szVarName 為指定找尋系統中環 境變數的名稱。 【傳 出 值】如果找到則傳出字串指標,沒找 到則傳出 NULL 。 【傳 出 值】如果找到則傳出字串指標,沒找 到則傳出 NULL 。
putenv 設定系統的環境變數 【函數原型】 char* putenv( const char* szNameEqValue ) ; 【函數原型】 char* putenv( const char* szNameEqValue ) ; 【標 頭 檔】 【標 頭 檔】 【說 明】以字串 szNameEqValue 設定系統 的環境變數。 【說 明】以字串 szNameEqValue 設定系統 的環境變數。 【傳入參數】 szNameEqValue 為設定的環境變 數名稱與內容。 【傳入參數】 szNameEqValue 為設定的環境變 數名稱與內容。 【傳 出 值】 0 值為設定成功, -1 值為設定失 敗。 【傳 出 值】 0 值為設定成功, -1 值為設定失 敗。