C 標準函式庫

C 標準函式庫

C語言程式設計里,C 標準函式庫(C Standard library)收集所有目前符合標準的表頭檔(head file),以及常用的函式庫實作程式,例如I/O 輸入輸出和字串控制。不像COBOLFortranPL/I等程式語言,在 C 語言的工作任務里不會包含嵌入的關鍵字,所以幾乎所有的 C 語言程式都是由標準函式庫的函式來建立的。

基本介紹

  • 中文名:C 標準函式庫
  • 外文名:C standard library
  • 屬於:C語言
  • 定義:由標準函式庫的函式來建立
  • 系統:計算機
  • 學科:計算機系統
設計,設計品質,標準函式,字元函式,字元串函式,流式檔案函式,格式化輸入輸出函式,歷史沿革,

設計

每一個函式的名稱與特性會被寫成一個電腦檔案,這個檔案就稱為標頭檔案,但是實際的函式實作是被分存到函式庫檔案里。標頭檔的命名和領域是很常見的,但是函式庫的組織架構也會因為不同的編譯器而有所不同。標準函式庫通常會隨附在編譯器上。因為 C 編譯器常會提供一些額外的非ANSI C函式功能,所以某個隨附在特定編譯器上的標準函式庫,對其他不同的編譯器來說,是不相容的。

設計品質

大多 C 標準函式庫在設計上做得相當不錯。有些少部分的,會為了商業優勢和利益,會把某些舊函式視同錯誤或提出警告。字串輸入函式 gets()(以及 scanf() 讀取字串輸入的使用上)是很多緩衝區溢位的原因,而且大多的程式設計指南會建議避免使用它。另一個較為奇特的函式是 strtok(),它原本是作為早期的辭彙分析用途,但是它非常容易出錯(fragile),而且很難使用。

標準函式

C語言中沒有固定的輸入輸出語句,I/O功能以函式調用的形式實現。這樣做不僅提高了編譯程式的效率,而且也使C語言的可移植性大大提高。
C語言的標準I/0函式都是面向檔案的,即輸入輸出操作是以對檔案讀寫的形式進行的,它反映,C與UNIX的內在聯繫。
C語言的標準I/O函式大致可以分為四類,即字元I/O函式、字元串I/O函式、流式檔案I/O函式和格式化輸入輸出函式。

字元函式

其中,用於從標準輸入stdin或流式檔案讀取字元的函式有:
getc()
getchar()
fgetc()
用於向標準輸出stdout或流式檔案寫字元的函式有:
putc()
putchar()
fputc()
這一類函式中有些是以宏的形式實現的,使用時應注意它們的副作用。

字元串函式

字元串I/O函式主要有:
gets()
puts()
fgets()
fputs()
以上函式用於字元串的輸入輸出。對於標準輸入,字元串由換行符結束,讀入後換行符由空白符7\O’替代;對標準輸出,則將空白符換成換行符寫出。

流式檔案函式

流式檔案I/O函式用於對指定的流式檔案進行打開、關閉和讀寫等操作。在UNIX中,檔案是無格式的位元組流,而不存在象記錄那樣的結構。這類函式包括:
fopen() 打開檔案
fclose() 關閉檔案
fread() 讀檔案
furite() 寫檔案
fseek() 檔案讀寫指針定位
fflush() 清檔案緩衝區

格式化輸入輸出函式

最基本的格式化I/O函式是printf(標準輸出)和scanf(標準輸入)。此外還有派生的fprintf和fscanf、sprintf和sscanf等。格式化I/O函式用於格式化數據的輸入輸出,這些函式的參數個數是可變的,但必須包括一個控制字元串,控制字元串決定輸入或輸出數據的類型、精度和格式。

歷史沿革

1995年,Normative Addendum1 (NA1)批准了三個表頭檔(iso646.h, wchar.h, and wctype.h)增加到C標準函式庫中。C99標準增加了六個表頭檔(complex.h, fenv.h, inttypes.h, stdbool.h, stdint.h, and tgmath.h)。C11標準中又新增了5個表頭檔(stdalign.h, stdatomic.h, stdnoreturn.h, threads.h, and uchar.h)。至此,C標準函式庫共29個表頭檔:
名字
源自
描述
<assert.h>
Contains the assert macro, used to assist with detecting logical errors and other types of bug in debugging versions of a program.
<complex.h>
C99
A set of functions for manipulating複數.
<ctype.h>
Defines set of functions used to classify characters by their types or to convert between upper and lower case in a way that is independent of the used character set (typicallyASCIIor one of its extensions, although implementations utilizingEBCDICare also known).
<errno.h>
For testing error codes reported by library functions.
<fenv.h>
C99
Defines a set of functions for controlling浮點數environment.
<float.h>
Defines macro constants specifying the implementation-specific properties of the浮點數library.
<inttypes.h>
C99
Defines exact width integer types.
<iso646.h>
NA1
Defines several macros that are equivalent to some of the operators in C. For programming inISO 646variant character sets.
<limits.h>
Defines macro constants specifying the implementation-specific properties of the integer types.
<locale.h>
Defines C localization functions.
<math.h>
Defines C mathematical functions.
<setjmp.h>
Declares the macros setjmp and longjmp, which are used for non-local exits.
<signal.h>
Defines C signal handling functions.
<stdalign.h>
C11
For querying and specifying the data structure alignment of objects.
<stdarg.h>
For accessing a varying number of arguments passed to functions.
<stdatomic.h>
C11
For atomic operations on data shared between threads.
<stdbool.h>
C99
Defines a boolean data type.
<stddef.h>
Defines several useful types and macros.
<stdint.h>
C99
Defines exact width integer types.
<stdio.h>
Defines core input and output functions
<stdlib.h>
Defines numeric conversion functions, pseudo-random numbers generation functions, dynamicmemory allocation, process control functions
<stdnoreturn.h>
C11
For specifying non-returning functions.
<string.h>
Defines C string handling functions.
<tgmath.h>
C99
Defines type-generic mathematical functions.
<threads.h>
C11
Defines functions for managing multiple threads as well as mutexes and condition variables.
<time.h>
Defines date and time handling functions
<uchar.h>
C11
Types and functions for manipulatingUnicodecharacters.
<wchar.h>
NA1
Defines wide string handling functions.
<wctype.h>
NA1
Defines set of functions used to classify wide characters by their types or to convert between upper and lower case

相關詞條

熱門詞條

聯絡我們