有很多工程師喜歡自己封裝一些標準庫已有的函數,其實自己封裝的函數,並不一定比標準庫好,有時候反而代碼更冗餘,且有bug。
下面小編就來分享一下C語言常見的一些標準庫。
標準頭文件包括:
<asset.h><ctype.h><errno.h><float.h><limits.h>
<locale.h><math.h><stdio.h><signal.h><time.h>
<stddef.h><stdlib.h><string.h><stdarg.h><setjmp.h>
一、標準定義(<stddef.h>)文件<stddef.h>裡包含了標準庫的一些常用定義,無論我們包含哪個標準頭文件,<stddef.h>都會被自動包含進來。
這個文件裡定義:
● 類型size_t(sizeof運算符的結果類型,是某個無符號整型);
● 類型ptrdiff_t(兩個指針相減運算的結果類型,是某個有符號整型);
● 類型wchar_t(寬字符類型,是一個整型,其中足以存放本系統所支持的所有本地環境中的字符集的所有編碼值。這裡還保證空字符的編碼值為0);
● 符號常量NULL(空指針值);
● 宏offsetot (這是一個帶參數的宏,第一個參數應是一個結構類型,第二個參數應是結構成員名。
offsetot(s,m)
求出成員m在結構類型t的變量裡的偏移量)。
註:其中有些定義也出現在其他頭文件裡(如NULL)。
二、錯誤信息(<errno.h>)<errno.h>定義了一個int類型的表達式errno,可以看作一個變量,其初始值為0,一些標準庫函數執行中出錯時將它設為非0值,但任何標準庫函數都設置它為0。
<errno.h>裡還定義了兩個宏EDOM和ERANGE,都是非0的整數值。數學函數執行中遇到參數錯誤,就會將errno置為EDOM,如出現值域錯誤就會將errno置為ERANGE。
三、輸入輸出函數(<stdio.h>)文件打開和關閉:
字符輸入輸出:
getc和putc與這兩個函數類似,但通過宏定義實現。通常有下面定義:
格式化輸入輸出:
行式輸入輸出:
直接輸入輸出:
1.三角函數:
2.指數和對數函數:
3.其他函數:
註:所有上面未給出類型特徵的函數都取一個參數,其參數與返回值都是double類型。
下面函數返回雙精度值(包括函數ceil和floor)。在下表裡,除其中有特別說明的參數之外,所有函數的其他參數都是double類型。
函數原型意義解釋:
見下表:
註:條件成立時這些函數返回非0值。最後兩個轉換函數對於非字母參數返回原字符。
1.字符串函數
所有字符串函數列在下表裡,函數描述採用如下約定:s、t表示 (char *)類型的參數,cs、ct表示(const char*)類型的參數(它們都應表示字符串)。
n表示size_t類型的參數(size_t是一個無符號的整數類型),c是整型參數(在函數裡轉換到char):
函數原型意義解釋:
2.存儲區操作
<string.h>還有一組字符數組操作函數(存儲區操作函數),名字都以mem開頭,以某種高效方式實現。
在下面原型中,參數s和t的類型是(void *),cs和ct的類型是(const void *),n的類型是size_t,c的類型是int(轉換為unsigned char)。
函數原型意義解釋:
1.隨機數函數:
函數原型意義解釋
2.動態存儲分配函數:
函數原型意義解釋
3.幾個整數函數
幾個簡單的整數函數見下表,div_t和ldiv_t是兩個預定義結構類型,用於存放整除時得到的商和餘數。
div_t類型的成分是int類型的quot和rem,ldiv_t類型的成分是long類型的quot和rem。
函數原型意義解釋
4.數值轉換
函數原型意義解釋
5.執行控制
1)非正常終止函數abort。
原型是:
2)正常終止函數exit。
原型是:
導致程序按正常方式立即終止。status作為送給執行環境的出口值,0表示成功結束,兩個可用的常數為EXIT_SUCCESS,EXIT_FAILURE。
3)正常終止註冊函數atexit。
原型是:
可用本函數把一些函數註冊為結束動作。被註冊函數應當是無參無返回值的函數。註冊正常完成時atexit返回值0,否則返回非零值。
6.與執行環境交互
1)向執行環境傳送命令的函數system。
原型是:
把串s傳遞給程序的執行環境要求作為系統命令執行。如以NULL為參數調用,函數返回非0表示環境裡有命令解釋器。如果s不是NULL,返回值由實現確定。
2)訪問執行環境的函數getenv。
原型是:
從執行環境中取回與字符串s相關聯的環境串。如果找不到就返回NULL。本函數的具體結果由實現確定。在許多執行環境裡,可以用這個函數去查看「環境變量」的值。
7.常用函數bsearch和qsort
1)二分法查找函數bsearch:
函數指針參數cmp的實參應是一個與字符串比較函數strcmp類似的函數,確定排序的順序,當第一個參數keyval比第二個參數datum大、相等或小時分別返回正、零或負值。
2)快速排序函數qsort:
qsort對於比較函數cmp的要求與bsearch一樣。設有數組base[0],...,base[n-1],元素大小為size。用qsort可以把這個數組的元素按cmp確定的上升順序重新排列。
最後,不管你是轉行也好,初學也罷,進階也可,如果你想學編程~
——【值得關注】我的C/C++編程學習交流俱樂部!——
【編程學習Q群:795246887】
涉及:C語言、C++、windows編程、網絡編程、QT圖形界面開發、Linux編程、遊戲編程、數據結構與算以及資料庫.
點擊下方 ↓ 原文連結即可直接進入~