C語言這些常用的標準庫(頭文件),你不得不知道...

2021-02-19 C語言編程俱樂部

有很多工程師喜歡自己封裝一些標準庫已有的函數,其實自己封裝的函數,並不一定比標準庫好,有時候反而代碼更冗餘,且有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與這兩個函數類似,但通過宏定義實現。通常有下面定義:


格式化輸入輸出:


行式輸入輸出:


直接輸入輸出:


四、數學函數(<math.h>)

1.三角函數:


2.指數和對數函數:


3.其他函數:


註:所有上面未給出類型特徵的函數都取一個參數,其參數與返回值都是double類型。

        下面函數返回雙精度值(包括函數ceil和floor)。在下表裡,除其中有特別說明的參數之外,所有函數的其他參數都是double類型。

函數原型意義解釋:



五、字符處理函數(<ctype.h>)

        見下表:


註:條件成立時這些函數返回非0值。最後兩個轉換函數對於非字母參數返回原字符。


六、字符串函數(<string.h>)

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)。

函數原型意義解釋:



七、功能函數(<stdlib.h>)

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編程、遊戲編程、數據結構與算以及資料庫.

點擊下方 ↓ 原文連結即可直接進入~

相關焦點

  • C語言中常用的幾個頭文件及庫函數
    來源:https://www.jb51.net/article/124594.htm這篇文章主要介紹了C語言中常用的幾個頭文件及庫函數的相關資料
  • C語言這些常用的標準庫,你不得不知道...
    下面就來分享一下C語言常見的一些標準庫。標準頭文件包括:<asset.h> <ctype.h> <errno.h> <float.h><limits.h> <locale.h> <math.h> <
  • 嵌入式常用的c標準庫
    C標準函數庫(C Standard library)是所有符合標準的頭文件(head file)的集合,以及常用的函數庫實現程序,例如I/O 輸入輸出和字符串控制。不像 COBOL、Fortran 和 PL/I等程式語言,在 C 語言的工作任務裡不會包含嵌入的關鍵字,所以幾乎所有的 C 語言程序都是由標準函數庫的函數來創建的。
  • C語言常用標準庫匯總,你不得不知道......
    今天就來分享一下C語言常見的一些標準庫。方便大家更加系統地理解C語言。下面咱們就開始咯!標準頭文件包括:<asset.h> <ctype.h> <errno.h> <float.h><limits.h> <locale.h> <math.h> <setjmp.h>
  • C語言項目中.h和.c文件的關係和概念
    在編譯器只認識.c(.cpp))文件,而不知道.h是何物的年代,那時的人們寫了很多的.c(.cpp)文件,漸漸地,人們發現在很多.c(.cpp)文件中的聲明語句就是相同的。
  • C語言頭文件被include後都發生了什麼?為何不能在頭文件定義變量
    頭文件是C語言的一個重要組成部分,這種類型的文件名一般以 .h 結尾,h 表示 header,因此被稱為「頭文件」。頭文件裡一般存放公開的函數原型,數據類型等內容,其他模塊需要使用這些函數或者數據類型時,只需包含相應頭文件即可。
  • C語言常用的庫函數
  • c編譯器so easy,gcc c編譯器生成、使用動靜態庫
    2.頭文件(Head Files)在C語言和其他語言中,頭文件聲明了系統函數和庫函數,並且定義了一些常量。對於C語言,頭文件基本上散落於/usr/include和它的子文件夾下。其他的程式語言的庫函數分布在編譯器定義的地方,比如在一些Linux版本中,X Window系統庫函數分布在/usr/include/X11,GNU C++的庫函數分布在/usr/include/g++。這些系統庫函數的位置對於編譯器來說都是「標準位置」,即編譯器能夠自動搜尋這些位置。
  • 還在糾結C語言中的動態庫和靜態庫?這樣選就對了!
    動態庫與靜態庫優缺點比較我們在編寫一個 C 語言程序的時候,經常會遇到好多重複或常用的部分,如果每次都重新編寫固然是可以的,不過那樣會大大降低工作效率,並且影響代碼的可讀性,更不利於後期的代碼維護。我們可以把他們製作成相應的功能函數,使用時直接調用就會很方便,還可以進行後期的功能升級。
  • C語言怎麼樣?今天聊聊C語言的發展史!
    C語言發展史的點點滴滴。 任何一種新事物的出現都不是來自於偶然,而是時代所驅使的必然結果。 如果你問我:C語言有多偉大。那麼,我可能會想一下,說:多偉大我不知道,但是我知道很偉大。
  • 深度理解C語言的編譯機制和語言標準,萬物皆可C!
    它還可以幫助你理解為什麼編寫一個 C 程序必須經過一些特定步驟。  用 C 語言編寫一個程序時,你將編寫的內容保存在一個被稱為原始碼文件的文本文件中。  大多數 的系統,都需要該文件的名稱以 .c 結尾。例如,hello world.c 。名稱中小點前的部分被稱為基本名,小點後的部分被稱為擴展名。因此,hello world 是一個基本名,c 是一個擴展名。
  • C語言晉級--ANSI C文件管理
    ANSI 的 C 的標準庫封裝了文件的系統調用,為了提高文件打開的效率還加入了緩衝機制,提供記錄的形式讀寫文件,並且有很好的移植性,是linux C語言最基礎的文件編程。一、文件指針和六流文件:永久儲存的、有特定順序的、有名稱的字節組成的集合。在Linux 系統中通常能見到的目錄、設備文件、管道等都屬於文件。
  • C語言的頭文件包含竟然有那麼多講究!
    曾以為自己寫C語言已經輕車熟路了,特別是對軟體文件的工程管理上,因為心裡對自己的代碼編寫風格還是有自信的。(畢竟剛畢業時老大對我最初的訓練就是編碼格式的規範化處理)曾以為,一個.c文件對應一個.h文件,.c文件只包含它自身的.h文件就好,若.c文件中用到其他文件中的內容,則.h文件把用到的頭文件包含進來就可以了。
  • C語言常用標準庫
    下面就來分享一下C語言常見的一些標準庫。標準頭文件包括:<asset.h> <ctype.h> <errno.h> <float.h> <limits.h> <locale.h> <math.h> <setjmp.h> <
  • PSIM仿真軟體高級應用——C語言動態連結庫編寫和調用
    C語言知識C語言語法和常用編程流程;子函數的調用和申明;重點掌握C語言中數組、指針、結構體、共用體等應用;養成良好的編程習慣和變量命名習慣。3 PSIM仿真高級應用3.1靜態連結庫和動態連結庫(DLL)應用靜態連結庫就是常說的lib文件,用戶可以將常用的C語言子函數封裝成靜態庫文件,以便建立動態
  • Linux 高級編程 - 標準 IO 庫
    標準 IO 庫上一篇文章我們學習了 5 個底層的 IO 函數,這次我們來學習標準的 IO 函數,既然是標準那肯定在多個平臺都有使用到,例如 Linux,Windows…,上層應用用標準庫開發還是很常見的,因為它們可以跨平臺。
  • C語言常用標準庫解讀
    下面就來分享一下C語言常見的一些標準庫。標準頭文件包括:<asset.h> <ctype.h> <errno.h> <float.h><limits.h> <locale.h> <math.h> <setjmp.h><signal.h
  • C/C+中的頭文件及其用法詳細說明書
    C語言具有許多庫,這些庫包含預定義的函數以使編程更加容易。在C語言中,頭文件包含一組預定義的標準庫函數。通過在C預處理指令「 #include」中包含頭文件的請求來在程序中使用頭文件。所有的頭文件都有一個擴展名「 .h」。通過包含頭文件,我們可以在程序中使用其內容。
  • 學習c語言筆記——C庫函數printf()
    c語言中的printf是什麼來的?」。我答:「它是一個函數,主要用來輸出運算結果。」 ,下面就給大家介紹C庫函數printf()使用方法。下面我們通過一個調用c庫函數的c語言案例來說明printf()函數的使用方法,如c語言1。
  • 書籍分享|零基礎學習C語言(附電子書)
    語言風趣活潑,除了c語言,還教會了我們很多做人做事的道理。作為Sun公司的工程師,內功極深,不迷信任何權威,還經常調侃下 ANSI C委員會,ISO組織和GNU的作品(如GCC)。把c講解到了一個很高的層次,深入剖析了其他書上沒有提到過的好東西。一本扯C語言軼事的書,可以從中領悟到你所常用的那些東西為什麼被發明出來,很棒。