C 標準庫 - 快速指南



C 庫 - <assert.h>

C 標準庫的assert.h標頭檔案提供了一個名為assert的宏,可用於驗證程式做出的假設,並在該假設為假時列印診斷訊息。

定義的宏assert引用了另一個宏NDEBUG,該宏不屬於<assert.h>。如果在包含<assert.h>的位置,在原始檔中將NDEBUG定義為宏名稱,則assert宏定義如下:

#define assert(ignore) ((void)0)

庫宏

以下是標頭檔案assert.h中定義的唯一函式:

序號 函式及描述
1 void assert(int expression)

這實際上是一個宏,而不是函式,可用於在C程式中新增診斷資訊。

C 庫 - <ctype.h>

C 標準庫的ctype.h標頭檔案聲明瞭幾個用於測試和對映字元的有用函式。

所有函式都接受int作為引數,其值必須為EOF或可表示為無符號字元。

如果引數c滿足所述條件,則所有函式都返回非零值(true),否則返回零(false)。

庫函式

以下是標頭檔案ctype.h中定義的函式:

序號 函式及描述
1 int isalnum(int c)

此函式檢查傳遞的字元是否為字母數字字元。

2 int isalpha(int c)

此函式檢查傳遞的字元是否為字母字元。

3 int iscntrl(int c)

此函式檢查傳遞的字元是否為控制字元。

4 int isdigit(int c)

此函式檢查傳遞的字元是否為十進位制數字。

5 int isgraph(int c)

此函式檢查傳遞的字元是否使用區域設定具有圖形表示形式。

6 int islower(int c)

此函式檢查傳遞的字元是否為小寫字母。

7 int isprint(int c)

此函式檢查傳遞的字元是否可列印。

8 int ispunct(int c)

此函式檢查傳遞的字元是否為標點符號字元。

9 int isspace(int c)

此函式檢查傳遞的字元是否為空格字元。

10 int isupper(int c)

此函式檢查傳遞的字元是否為大寫字母。

11 int isxdigit(int c)

此函式檢查傳遞的字元是否為十六進位制數字。

該庫還包含兩個轉換函式,它們接受並返回“int”。

序號 函式及描述
1 int tolower(int c)

此函式將大寫字母轉換為小寫字母。

2 int toupper(int c)

此函式將小寫字母轉換為大寫字母。

字元類

序號 字元類及描述
1

數字

這是一組整數 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }。

2

十六進位制數字

這是一組 { 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f }。

3

小寫字母

這是一組小寫字母 { a b c d e f g h i j k l m n o p q r s t u v w x y z }。

4

大寫字母

這是一組大寫字母 {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z }。

5

字母

這是一組小寫和大寫字母。

6

字母數字字元

這是一組數字、小寫字母和大寫字母。

7

標點符號字元

這是一組 ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~

8

圖形字元

這是一組字母數字字元和標點符號字元。

9

空格字元

這是一組製表符、換行符、垂直製表符、換頁符、回車符和空格。

10

可列印字元

這是一組字母數字字元、標點符號字元和空格字元。

11

控制字元

在ASCII中,這些字元的八進位制程式碼為000到037,以及177(DEL)。

12

空白字元

這些是空格和製表符。

13

字母字元

這是一組小寫字母和大寫字母。

C 庫 - <errno.h>

C 標準庫的errno.h標頭檔案定義了整數變數errno,該變數由系統呼叫和某些庫函式在發生錯誤時設定,以指示發生了什麼錯誤。此宏擴充套件為型別為int的可修改左值,因此程式可以讀取和修改它。

errno在程式啟動時設定為零。標準C庫的某些函式將其值修改為非零,以指示某些型別的錯誤。您也可以根據需要修改其值或將其重置為零。

errno.h標頭檔案還定義了一個指示不同錯誤程式碼的宏列表,這些宏將擴充套件為型別為int的整數常量表達式。

庫宏

以下是標頭檔案errno.h中定義的宏:

序號 宏及描述
1 extern int errno

這是由系統呼叫和某些庫函式在發生錯誤時設定的宏,以指示發生了什麼錯誤。

2 EDOM 域錯誤

此宏表示域錯誤,如果輸入引數超出數學函式定義的域,則會發生此錯誤,並且errno設定為EDOM。

3 ERANGE 範圍錯誤

此宏表示範圍錯誤,如果輸入引數超出數學函式定義的範圍,則會發生此錯誤,並且errno設定為ERANGE。

C 庫 - <float.h>

C 標準庫的float.h標頭檔案包含一組與浮點值相關的各種平臺相關的常量。這些常量由ANSI C提出。它們允許建立更可移植的程式。在檢查所有常量之前,最好了解浮點數由以下四個元素組成:

序號 元件及元件描述
1

S

符號(+/-)

2

b

指數表示的基數或基數,二進位制為2,十進位制為10,十六進位制為16,依此類推...

3

e

指數,介於最小emin和最大emax之間的整數。

4

p

精度,有效數字中基數b的位數。

基於以上4個元件,浮點數的值如下:

floating-point = ( S ) p x be

or

floating-point = (+/-) precision x baseexponent

庫宏

以下值是特定於實現的,並使用#define指令定義,但這些值可能不會低於此處給出的值。請注意,在所有情況下,FLT指的是型別float,DBL指的是double,而LDBL指的是long double

序號 宏及描述
1

FLT_ROUNDS

定義浮點加法的舍入模式,它可以具有以下任何值:

  • -1 - 不確定
  • 0 - 向零舍入
  • 1 - 向最近舍入
  • 2 - 向正無窮大舍入
  • 3 - 向負無窮大舍入
2

FLT_RADIX 2

這定義了指數的基數表示。基數2為二進位制,基數10為正常的十進位制表示,基數16為十六進位制。

3

FLT_MANT_DIG

DBL_MANT_DIG

LDBL_MANT_DIG

這些宏定義了數字中的位數(以FLT_RADIX為基數)。

4

FLT_DIG 6

DBL_DIG 10

LDBL_DIG 10

這些宏定義了在舍入後無需更改即可表示的最大十進位制數字(基數10)數。

5

FLT_MIN_EXP

DBL_MIN_EXP

LDBL_MIN_EXP

這些宏定義了以FLT_RADIX為基數的指數的最小負整數。

6

FLT_MIN_10_EXP -37

DBL_MIN_10_EXP -37

LDBL_MIN_10_EXP -37

這些宏定義了以10為基數的指數的最小負整數。

7

FLT_MAX_EXP

DBL_MAX_EXP

LDBL_MAX_EXP

這些宏定義了以FLT_RADIX為基數的指數的最大整數。

8

FLT_MAX_10_EXP +37

DBL_MAX_10_EXP +37

LDBL_MAX_10_EXP +37

這些宏定義了以10為基數的指數的最大整數。

9

FLT_MAX 1E+37

DBL_MAX 1E+37

LDBL_MAX 1E+37

這些宏定義了最大有限浮點值。

10

FLT_EPSILON 1E-5

DBL_EPSILON 1E-9

LDBL_EPSILON 1E-9

這些宏定義了可表示的最小有效數字。

11

FLT_MIN 1E-37

DBL_MIN 1E-37

LDBL_MIN 1E-37

這些宏定義了最小浮點值。

示例

以下示例顯示了float.h檔案中定義的一些常量的用法。

即時演示
#include <stdio.h>
#include <float.h>

int main () {
   printf("The maximum value of float = %.10e\n", FLT_MAX);
   printf("The minimum value of float = %.10e\n", FLT_MIN);

   printf("The number of digits in the number = %.10e\n", FLT_MANT_DIG);
}

讓我們編譯並執行上述程式,它將產生以下結果:

The maximum value of float = 3.4028234664e+38
The minimum value of float = 1.1754943508e-38
The number of digits in the number = 7.2996655210e-312

C 庫 - <limits.h>

limits.h標頭檔案確定各種變數型別的各種屬性。此標頭檔案中定義的宏限制了各種變數型別的值,例如char、int和long。

這些限制指定變數不能儲存超出這些限制的任何值,例如,無符號字元最多可以儲存255的最大值。

庫宏

以下值是特定於實現的,並使用#define指令定義,但這些值可能不會低於此處給出的值。

描述
CHAR_BIT 8 定義一個位元組中的位數。
SCHAR_MIN -128 定義有符號char的最小值。
SCHAR_MAX +127 定義有符號char的最大值。
UCHAR_MAX 255 定義無符號char的最大值。
CHAR_MIN

-128 定義字元型別char的最小值,如果char表示負值,則其值將等於SCHAR_MIN,否則為零。
CHAR_MAX +127 定義字元型別char的值,如果char表示負值,則其值將等於SCHAR_MAX,否則為UCHAR_MAX。
MB_LEN_MAX 16 定義多位元組字元中的最大位元組數。
SHRT_MIN -32768 定義短整型short int的最小值。
SHRT_MAX +32767 定義短整型short int的最大值。
USHRT_MAX 65535 定義無符號短整型unsigned short int的最大值。
INT_MIN -2147483648 定義整型int的最小值。
INT_MAX +2147483647 定義整型int的最大值。
UINT_MAX 4294967295 定義無符號整型unsigned int的最大值。
LONG_MIN -9223372036854775808 定義長整型long int的最小值。
LONG_MAX +9223372036854775807 定義長整型long int的最大值。
ULONG_MAX 18446744073709551615 定義無符號長整型unsigned long int的最大值。

示例

以下示例顯示了在limits.h檔案中定義的一些常量的用法。

即時演示
#include <stdio.h>
#include <limits.h>

int main() {

   printf("The number of bits in a byte %d\n", CHAR_BIT);

   printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN);
   printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX);
   printf("The maximum value of UNSIGNED CHAR = %d\n", UCHAR_MAX);

   printf("The minimum value of SHORT INT = %d\n", SHRT_MIN);
   printf("The maximum value of SHORT INT = %d\n", SHRT_MAX); 

   printf("The minimum value of INT = %d\n", INT_MIN);
   printf("The maximum value of INT = %d\n", INT_MAX);

   printf("The minimum value of CHAR = %d\n", CHAR_MIN);
   printf("The maximum value of CHAR = %d\n", CHAR_MAX);

   printf("The minimum value of LONG = %ld\n", LONG_MIN);
   printf("The maximum value of LONG = %ld\n", LONG_MAX);
  
   return(0);
}

讓我們編譯並執行上述程式,它將產生以下結果:

The maximum value of UNSIGNED CHAR = 255                                    
The minimum value of SHORT INT = -32768                                     
The maximum value of SHORT INT = 32767                                      
The minimum value of INT = -2147483648                                      
The maximum value of INT = 2147483647                                       
The minimum value of CHAR = -128                                            
The maximum value of CHAR = 127                                             
The minimum value of LONG = -9223372036854775808                            
The maximum value of LONG = 9223372036854775807

C 庫 - <locale.h>

locale.h標頭檔案定義了特定於位置的設定,例如日期格式和貨幣符號。您會發現定義了幾個宏以及一個重要的結構struct lconv和下面列出的兩個重要函式。

庫宏

以下是標頭檔案中定義的宏,這些宏將在下面列出的兩個函式中使用:

序號 宏及描述
1

LC_ALL

設定所有內容。

2

LC_COLLATE

影響strcoll和strxfrm函式。

3

LC_CTYPE

影響所有字元函式。

4

LC_MONETARY

影響localeconv函式提供的貨幣資訊。

5

LC_NUMERIC

影響小數點格式以及localeconv函式提供的資訊。

6

LC_TIME

影響strftime函式。

庫函式

以下是標頭檔案locale.h中定義的函式:

序號 函式及描述
1 char *setlocale(int category, const char *locale)

設定或讀取依賴於位置的資訊。

2 struct lconv *localeconv(void)

設定或讀取依賴於位置的資訊。

庫結構

typedef struct {
   char *decimal_point;
   char *thousands_sep;
   char *grouping;	
   char *int_curr_symbol;
   char *currency_symbol;
   char *mon_decimal_point;
   char *mon_thousands_sep;
   char *mon_grouping;
   char *positive_sign;
   char *negative_sign;
   char int_frac_digits;
   char frac_digits;
   char p_cs_precedes;
   char p_sep_by_space;
   char n_cs_precedes;
   char n_sep_by_space;
   char p_sign_posn;
   char n_sign_posn;
} lconv

以下是每個欄位的描述:

序號 欄位 & 描述
1

decimal_point

用於非貨幣值的十進位制點字元。

2

thousands_sep

用於非貨幣值的千位分隔符字元。

3

grouping

一個字串,指示非貨幣數量中每組數字的大小。每個字元表示一個整數值,表示當前組中的數字個數。值為0表示後續組使用前一個值。

4

int_curr_symbol

它是使用的國際貨幣符號的字串。前三個字元是ISO 4217:1987指定的字元,第四個字元是將貨幣符號與貨幣數量分隔開的字元。

5

currency_symbol

本地使用的貨幣符號。

6

mon_decimal_point

用於貨幣值的十進位制點字元。

7

mon_thousands_sep

用於貨幣值的千位分隔符字元。

8

mon_grouping

一個字串,其元素定義貨幣值中數字分組的大小。每個字元表示一個整數值,表示當前組中的數字個數。值為0表示後續組使用前一個值。

9

positive_sign

用於正貨幣值的字元。

10

negative_sign

用於負貨幣值的字元。

11

int_frac_digits

在國際貨幣值中顯示小數點後數字的個數。

12

frac_digits

在貨幣值中顯示小數點後數字的個數。

13

p_cs_precedes

如果等於1,則貨幣符號出現在正貨幣值之前。如果等於0,則貨幣符號出現在正貨幣值之後。

14

p_sep_by_space

如果等於1,則貨幣符號與正貨幣值之間用空格分隔。如果等於0,則貨幣符號與正貨幣值之間沒有空格。

15

n_cs_precedes

如果等於1,則貨幣符號出現在負貨幣值之前。如果等於0,則貨幣符號出現在負貨幣值之後。

16

n_sep_by_space

如果等於1,則貨幣符號與負貨幣值之間用空格分隔。如果等於0,則貨幣符號與負貨幣值之間沒有空格。

17

p_sign_posn

表示正貨幣值中正號的位置。

18

n_sign_posn

表示負貨幣值中負號的位置。

以下值用於p_sign_posnn_sign_posn

描述
0 括號包含值和貨幣符號。
1 符號出現在值和貨幣符號之前。
2 符號出現在值和貨幣符號之後。
3 符號緊接在值和貨幣符號之前。
4 符號緊接在值和貨幣符號之後。

C 庫 - <math.h>

math.h標頭檔案定義了各種數學函式和一個宏。此庫中提供的全部函式都將double作為引數並返回double作為結果。

庫宏

此庫中只定義了一個宏:

序號 宏及描述
1

HUGE_VAL

如果函式的結果可能無法表示為浮點數,則使用此宏。如果正確結果的大小太大而無法表示,則函式將errno設定為ERANGE以指示範圍錯誤,並返回一個特定的、非常大的值,該值由宏HUGE_VAL或其負值(-HUGE_VAL)命名。

如果結果的大小太小,則返回零值。在這種情況下,errno可能會或可能不會設定為ERANGE。

庫函式

以下是標頭檔案math.h中定義的函式:

序號 函式及描述
1 double acos(double x)

返回x的反餘弦值(以弧度為單位)。

2 double asin(double x)

返回x的反正弦值(以弧度為單位)。

3 double atan(double x)

返回x的反正切值(以弧度為單位)。

4 double atan2(double y, double x)

根據兩個值的符號返回y/x的反正切值(以弧度為單位),以確定正確的象限。

5 double cos(double x)

返回弧度角x的餘弦值。

6 double cosh(double x)

返回x的雙曲餘弦值。

7 double sin(double x)

返回弧度角x的正弦值。

8 double sinh(double x)

返回x的雙曲正弦值。

9 double tanh(double x)

返回x的雙曲正切值。

10 double exp(double x)

返回e的x次冪。

11 double frexp(double x, int *exponent)

返回值為尾數,exponent指向的整數為指數。結果值為x = 尾數 * 2 ^ 指數。

12 double ldexp(double x, int exponent)

返回x乘以2的指數次冪。

13 double log(double x)

返回x的自然對數(以e為底的對數)。

14 double log10(double x)

返回x的常用對數(以10為底的對數)。

15 double modf(double x, double *integer)

返回值為小數部分(小數點後的部分),並將integer設定為整數部分。

16 double pow(double x, double y)

返回x的y次冪。

17 double sqrt(double x)

返回x的平方根。

18 double ceil(double x)

返回大於或等於x的最小整數值。

19 double fabs(double x)

返回x的絕對值。

20 double floor(double x)

返回小於或等於x的最大整數值。

21 double fmod(double x, double y)

返回x除以y的餘數。

C 庫 - <setjmp.h>

setjmp.h標頭檔案定義了宏setjmp()、一個函式longjmp()和一個變數型別jmp_buf,用於繞過正常的函式呼叫和返回機制。

庫變數

以下是標頭檔案setjmp.h中定義的變數型別:

序號 變數 & 描述
1

jmp_buf

這是一種陣列型別,用於儲存宏setjmp()和函式longjmp()的資訊。

庫宏

此庫中只定義了一個宏:

序號 宏及描述
1 int setjmp(jmp_buf environment)

此宏將當前的environment儲存到變數environment中,以便以後由函式longjmp()使用。如果此宏直接從宏呼叫返回,則返回零,但如果它從longjmp()函式呼叫返回,則返回非零值。

庫函式

以下是標頭檔案setjmp.h中定義的唯一一個函式:

序號 函式及描述
1 void longjmp(jmp_buf environment, int value)

此函式恢復由程式相同呼叫中最近一次呼叫setjmp()宏時儲存的環境,並使用相應的jmp_buf引數。

C 庫 - <signal.h>

signal.h標頭檔案定義了一個變數型別sig_atomic_t、兩個函式呼叫和幾個宏,用於處理程式執行期間報告的不同訊號。

庫變數

以下是標頭檔案signal.h中定義的變數型別:

序號 變數 & 描述
1

sig_atomic_t

它是int型別,用作訊號處理程式中的變數。這是一種整數型別物件,即使在非同步訊號存在的情況下,也可以將其作為原子實體訪問。

庫宏

以下是標頭檔案signal.h中定義的宏,這些宏將在下面列出的兩個函式中使用。SIG_宏與signal函式一起使用以定義訊號函式。

序號 宏及描述
1

SIG_DFL

預設訊號處理程式。

2

SIG_ERR

表示訊號錯誤。

3

SIG_IGN

忽略訊號。

SIG宏用於在以下條件下表示訊號編號:

序號 宏及描述
1

SIGABRT

程式異常終止。

2

SIGFPE

浮點錯誤,例如除以零。

3

SIGILL

非法操作。

4

SIGINT

中斷訊號,例如ctrl-C。

5

SIGSEGV

無效的儲存器訪問,例如段錯誤。

6

SIGTERM

終止請求。

庫函式

以下是標頭檔案signal.h中定義的函式:

序號 函式及描述
1 void (*signal(int sig, void (*func)(int)))(int)

此函式設定一個函式來處理訊號,即訊號處理程式。

2 int raise(int sig)

此函式導致生成訊號sig。sig引數與SIG宏相容。

C 庫 - <stdarg.h>

stdarg.h 標頭檔案定義了一個變數型別va_list 和三個宏,這些宏可用於在函式中獲取引數,當引數數量未知時,即可變數量的引數。

可變引數的函式在引數列表的末尾用省略號(,...)定義。

庫變數

以下是 stdarg.h 標頭檔案中定義的變數型別:

序號 變數 & 描述
1

va_list

這是一種適合儲存三個宏va_start()、va_arg()va_end() 所需資訊的資料型別。

庫宏

以下是 stdarg.h 標頭檔案中定義的宏:

序號 宏及描述
1 void va_start(va_list ap, last_arg)

此宏初始化ap 變數,以便與va_argva_end 宏一起使用。last_arg 是傳遞給函式的最後一個已知的固定引數,即省略號之前的引數。

2 type va_arg(va_list ap, type)

此宏檢索函式引數列表中的下一個引數,其型別為type

3 void va_end(va_list ap)

此宏允許使用va_start 宏的可變引數函式返回。如果在從函式返回之前沒有呼叫va_end,則結果未定義。

C 庫 - <stddef.h>

stddef.h 標頭檔案定義了各種變數型別和宏。許多這些定義也出現在其他標頭檔案中。

庫變數

以下是 stddef.h 標頭檔案中定義的變數型別:

序號 變數 & 描述
1

ptrdiff_t

這是一個有符號整數型別,是兩個指標相減的結果。

2

size_t

這是一個無符號整數型別,是sizeof 關鍵字的結果。

3

wchar_t

這是一個整數型別,大小與寬字元常量相同。

庫宏

以下是 stddef.h 標頭檔案中定義的宏:

序號 宏及描述
1 NULL

此宏是空指標常量的值。

2 offsetof(type, member-designator)

這將產生一個型別為 size_t 的常數整數,表示結構成員從結構開頭處的偏移量(以位元組為單位)。成員由member-designator 給出,結構名稱在type 中給出。

C 庫 - <stdio.h>

stdio.h 標頭檔案定義了三個變數型別、幾個宏和各種用於執行輸入和輸出的函式。

庫變數

以下是 stdio.h 標頭檔案中定義的變數型別:

序號 變數 & 描述
1

size_t

這是一個無符號整數型別,是sizeof 關鍵字的結果。

2

FILE

這是一種適合儲存檔案流資訊的類物件型別。

3

fpos_t

這是一種適合儲存檔案中的任何位置的類物件型別。

庫宏

以下是 stdio.h 標頭檔案中定義的宏:

序號 宏及描述
1

NULL

此宏是空指標常量的值。

2

_IOFBF、_IOLBF_IONBF

這些宏展開為具有不同值的整型常量表達式,適合用作setvbuf 函式的第三個引數。

3

BUFSIZ

此宏是一個整數,表示setbuf 函式使用的緩衝區大小。

4

EOF

此宏是一個負整數,表示已到達檔案末尾。

5

FOPEN_MAX

此宏是一個整數,表示系統可以保證同時開啟的檔案的最大數量。

6

FILENAME_MAX

此宏是一個整數,表示適合儲存最長可能的檔名字元陣列的最長長度。如果實現沒有施加限制,則此值應為建議的最大值。

7

L_tmpnam

此宏是一個整數,表示適合儲存tmpnam 函式建立的最長可能的臨時檔名字元陣列的最長長度。

8

SEEK_CUR、SEEK_ENDSEEK_SET

這些宏用於fseek 函式,以定位檔案中的不同位置。

9

TMP_MAX

此宏是tmpnam 函式可以生成的唯一檔名的最大數量。

10

stderr、stdinstdout

這些宏是指向 FILE 型別的指標,分別對應於標準錯誤、標準輸入和標準輸出流。

庫函式

以下是 stdio.h 標頭檔案中定義的函式:

序號 函式及描述
1 int fclose(FILE *stream)

關閉流。所有緩衝區都將被重新整理。

2 void clearerr(FILE *stream)

清除給定流的檔案末尾和錯誤指示符。

3 int feof(FILE *stream)

測試給定流的檔案末尾指示符。

4 int ferror(FILE *stream)

測試給定流的錯誤指示符。

5 int fflush(FILE *stream)

重新整理流的輸出緩衝區。

6 int fgetpos(FILE *stream, fpos_t *pos)

獲取流的當前檔案位置並將其寫入 pos。

7 FILE *fopen(const char *filename, const char *mode)

使用給定的模式開啟 filename 指向的檔名。

8 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

從給定流讀取資料到 ptr 指向的陣列中。

9 FILE *freopen(const char *filename, const char *mode, FILE *stream)

將新的檔名與給定的開啟流關聯,同時關閉流中的舊檔案。

10 int fseek(FILE *stream, long int offset, int whence)

將流的檔案位置設定為給定的偏移量。引數offset 表示從給定whence 位置開始查詢的位元組數。

11 int fsetpos(FILE *stream, const fpos_t *pos)

將給定流的檔案位置設定為給定的位置。引數pos 是由 fgetpos 函式給出的位置。

12 long int ftell(FILE *stream)

返回給定流的當前檔案位置。

13 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

將 ptr 指向的陣列中的資料寫入給定流。

14 int remove(const char *filename)

刪除給定的檔名,使其不再可訪問。

15 int rename(const char *old_filename, const char *new_filename)

導致 old_filename 引用的檔名更改為 new_filename。

16 void rewind(FILE *stream)

將檔案位置設定為給定流的檔案開頭。

17 void setbuf(FILE *stream, char *buffer)

定義流應如何緩衝。

18 int setvbuf(FILE *stream, char *buffer, int mode, size_t size)

另一個定義流應如何緩衝的函式。

19 FILE *tmpfile(void)

以二進位制更新模式 (wb+) 建立臨時檔案。

20 char *tmpnam(char *str)

生成並返回一個有效的臨時檔名,該檔名不存在。

21 int fprintf(FILE *stream, const char *format, ...)

將格式化的輸出傳送到流。

22 int printf(const char *format, ...)

將格式化的輸出傳送到 stdout。

23 int sprintf(char *str, const char *format, ...)

將格式化的輸出傳送到字串。

24 int vfprintf(FILE *stream, const char *format, va_list arg)

使用引數列表將格式化的輸出傳送到流。

25 int vprintf(const char *format, va_list arg)

使用引數列表將格式化的輸出傳送到 stdout。

26 int vsprintf(char *str, const char *format, va_list arg)

使用引數列表將格式化的輸出傳送到字串。

27 int fscanf(FILE *stream, const char *format, ...)

從流讀取格式化的輸入。

28 int scanf(const char *format, ...)

從 stdin 讀取格式化的輸入。

29 int sscanf(const char *str, const char *format, ...)

從字串讀取格式化的輸入。

30 int fgetc(FILE *stream)

從指定的流中獲取下一個字元(一個無符號 char)併為流推進位置指示符。

31 char *fgets(char *str, int n, FILE *stream)

從指定的流讀取一行並將其儲存到 str 指向的字串中。當讀取 (n-1) 個字元、讀取換行符或到達檔案末尾時停止,以先發生者為準。

32 int fputc(int char, FILE *stream)

將引數 char 指定的字元(一個無符號 char)寫入指定的流併為流推進位置指示符。

33 int fputs(const char *str, FILE *stream)

將字串寫入指定的流,直到但不包括空字元。

34 int getc(FILE *stream)

從指定的流中獲取下一個字元(一個無符號 char)併為流推進位置指示符。

35 int getchar(void)

從 stdin 獲取一個字元(一個無符號 char)。

36 char *gets(char *str)

從 stdin 讀取一行並將其儲存到 str 指向的字串中。當讀取換行符或到達檔案末尾時停止,以先發生者為準。

37 int putc(int char, FILE *stream)

將引數 char 指定的字元(一個無符號 char)寫入指定的流併為流推進位置指示符。

38 int putchar(int char)

將引數 char 指定的字元(一個無符號 char)寫入 stdout。

39 int puts(const char *str)

將字串寫入 stdout,直到但不包括空字元。換行符將附加到輸出。

40 int ungetc(int char, FILE *stream)

將字元 char(一個無符號 char)推送到指定的流中,以便讀取下一個字元。

41 void perror(const char *str)

將描述性錯誤訊息列印到 stderr。首先列印字串 str,然後列印冒號,然後列印空格。

C 庫 - <stdlib.h>

stdlib.h 標頭檔案定義了四個變數型別、幾個宏和各種用於執行通用功能的函式。

庫變數

以下是 stdlib.h 標頭檔案中定義的變數型別:

序號 變數 & 描述
1

size_t

這是一個無符號整數型別,是sizeof 關鍵字的結果。

2

wchar_t

這是一個整數型別,大小與字元常量相同。

3

div_t

這是div 函式返回的結構。

4

ldiv_t

這是ldiv 函式返回的結構。

庫宏

以下是 stdlib.h 標頭檔案中定義的宏:

序號 宏及描述
1

NULL

此宏是空指標常量的值。

2

EXIT_FAILURE

這是 exit 函式在失敗時返回的值。

3

EXIT_SUCCESS

這是 exit 函式在成功時返回的值。

4

RAND_MAX

此宏是 rand 函式返回的最大值。

5

MB_CUR_MAX

此宏是多位元組字元集中位元組的最大數量,不能大於 MB_LEN_MAX。

庫函式

以下是 stlib.h 標頭檔案中定義的函式:

序號 函式及描述
1 double atof(const char *str)

將引數str 指向的字串轉換為浮點數(double 型別)。

2 int atoi(const char *str)

將引數str 指向的字串轉換為整數(int 型別)。

3 long int atol(const char *str)

將引數str 指向的字串轉換為長整數(long int 型別)。

4 double strtod(const char *str, char **endptr)

將引數str 指向的字串轉換為浮點數(double 型別)。

5 long int strtol(const char *str, char **endptr, int base)

將引數str 指向的字串轉換為長整數(long int 型別)。

6 unsigned long int strtoul(const char *str, char **endptr, int base)

將引數str 指向的字串轉換為無符號長整數(unsigned long int 型別)。

7 void *calloc(size_t nitems, size_t size)

分配請求的記憶體並返回指向它的指標。

8 void free(void *ptr

釋放之前透過呼叫calloc、mallocrealloc 分配的記憶體。

9 void *malloc(size_t size)

分配請求的記憶體並返回指向它的指標。

10 void *realloc(void *ptr, size_t size)

嘗試調整之前使用malloccalloc 呼叫分配的 ptr 指向的記憶體塊的大小。

11 void abort(void)

導致程式異常終止。

12 int atexit(void (*func)(void))

在程式正常終止時,導致指定的函式func被呼叫。

13 void exit(int status)

導致程式正常終止。

14 char *getenv(const char *name)

搜尋由name指向的環境字串,並將關聯的值返回到字串。

15 int system(const char *string)

將由string指定的命令傳遞給主機環境,由命令處理器執行。

16 void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))

執行二分查詢。

17 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))

對陣列進行排序。

18 int abs(int x)

返回x的絕對值。

19 div_t div(int numer, int denom)

將numer(分子)除以denom(分母)。

20 long int labs(long int x)

返回x的絕對值。

21 ldiv_t ldiv(long int numer, long int denom)

將numer(分子)除以denom(分母)。

22 int rand(void)

返回0到RAND_MAX範圍內的偽隨機數。

23 void srand(unsigned int seed)

此函式為函式rand使用的隨機數生成器設定種子。

24 int mblen(const char *str, size_t n)

返回引數str指向的多位元組字元的長度。

25 size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)

將引數str指向的多位元組字元字串轉換為pwcs指向的陣列。

26 int mbtowc(whcar_t *pwc, const char *str, size_t n)

檢查引數str指向的多位元組字元。

27 size_t wcstombs(char *str, const wchar_t *pwcs, size_t n)

將儲存在陣列pwcs中的程式碼轉換為多位元組字元,並將它們儲存在字串str中。

28 int wctomb(char *str, wchar_t wchar)

檢查由引數wchar給出的對應於多位元組字元的程式碼。

C 庫 - <string.h>

string.h標頭檔案定義了一種變數型別、一個宏和各種用於操作字元陣列的函式。

庫變數

以下是string.h標頭檔案中定義的變數型別:

序號 變數 & 描述
1

size_t

這是一個無符號整數型別,是sizeof 關鍵字的結果。

庫宏

以下是string.h標頭檔案中定義的宏:

序號 宏及描述
1

NULL

此宏是空指標常量的值。

庫函式

以下是string.h標頭檔案中定義的函式:

序號 函式及描述
1 void *memchr(const void *str, int c, size_t n)

在引數str指向的字串的前n個位元組中搜索字元c(一個無符號字元)的第一次出現。

2 int memcmp(const void *str1, const void *str2, size_t n)

比較str1str2的前n個位元組。

3 void *memcpy(void *dest, const void *src, size_t n)

將src中的n個字元複製到dest

4 void *memmove(void *dest, const void *src, size_t n)

另一個將str2中的n個字元複製到str1的函式。

5 void *memset(void *str, int c, size_t n)

將字元c(一個無符號字元)複製到引數str指向的字串的前n個字元。

6 char *strcat(char *dest, const char *src)

src指向的字串附加到dest指向的字串的末尾。

7 char *strncat(char *dest, const char *src, size_t n)

src指向的字串附加到dest指向的字串的末尾,最多n個字元長。

8 char *strchr(const char *str, int c)

在引數str指向的字串中搜索字元c(一個無符號字元)的第一次出現。

9 int strcmp(const char *str1, const char *str2)

比較str1指向的字串與str2指向的字串。

10 int strncmp(const char *str1, const char *str2, size_t n)

最多比較str1str2的前n個位元組。

11 int strcoll(const char *str1, const char *str2)

比較字串str1str2。結果取決於位置的LC_COLLATE設定。

12 char *strcpy(char *dest, const char *src)

src指向的字串複製到dest

13 char *strncpy(char *dest, const char *src, size_t n)

src指向的字串中的最多n個字元複製到dest

14 size_t strcspn(const char *str1, const char *str2)

計算str1的初始段的長度,該段完全由不在str2中的字元組成。

15 char *strerror(int errnum)

在一個內部陣列中搜索錯誤號errnum,並返回指向錯誤訊息字串的指標。

16 size_t strlen(const char *str)

計算字串str的長度,直到但不包括終止空字元。

17 char *strpbrk(const char *str1, const char *str2)

查詢字串str1中第一個與str2中指定的任何字元匹配的字元。

18 char *strrchr(const char *str, int c)

在引數str指向的字串中搜索字元c(一個無符號字元)的最後一次出現。

19 size_t strspn(const char *str1, const char *str2)

計算str1的初始段的長度,該段完全由str2中的字元組成。

20 char *strstr(const char *haystack, const char *needle)

查找出現在字串haystack中的整個字串needle(不包括終止空字元)的第一次出現。

21 char *strtok(char *str, const char *delim)

將字串str分解成一系列由delim分隔的標記。

22 size_t strxfrm(char *dest, const char *src, size_t n)

將字串src的前n個字元轉換為當前區域設定,並將它們放置在字串dest中。

C 庫 - <time.h>

time.h標頭檔案定義了四種變數型別、兩個宏和各種用於操作日期和時間的函式。

庫變數

以下是time.h標頭檔案中定義的變數型別:

序號 變數 & 描述
1

size_t

這是一個無符號整數型別,是sizeof 關鍵字的結果。

2

clock_t

這是一種適合儲存處理器時間的型別。

3

time_t是

這是一種適合儲存日曆時間的型別。

4

struct tm

這是一種用於儲存時間和日期的結構。

tm結構具有以下定義:

struct tm {
   int tm_sec;         /* seconds,  range 0 to 59          */
   int tm_min;         /* minutes, range 0 to 59           */
   int tm_hour;        /* hours, range 0 to 23             */
   int tm_mday;        /* day of the month, range 1 to 31  */
   int tm_mon;         /* month, range 0 to 11             */
   int tm_year;        /* The number of years since 1900   */
   int tm_wday;        /* day of the week, range 0 to 6    */
   int tm_yday;        /* day in the year, range 0 to 365  */
   int tm_isdst;       /* daylight saving time             */
};

庫宏

以下是time.h標頭檔案中定義的宏:

序號 宏及描述
1

NULL

此宏是空指標常量的值。

2

CLOCKS_PER_SEC

此宏表示每秒的處理器時鐘數。

庫函式

以下是time.h標頭檔案中定義的函式:

序號 函式及描述
1 char *asctime(const struct tm *timeptr)

返回一個指向字串的指標,該字串表示結構timeptr的日期和時間。

2 clock_t clock(void)

返回自實現定義的紀元(通常是程式的開始)開始以來使用的處理器時鐘時間。

3 char *ctime(const time_t *timer)

返回一個表示基於引數timer的本地時間的字串。

4 double difftime(time_t time1, time_t time2)

返回time1和time2(time1-time2)之間的秒差。

5 struct tm *gmtime(const time_t *timer)

timer的值被分解成tm結構,並以協調世界時(UTC)表示,也稱為格林威治標準時間(GMT)。

6 struct tm *localtime(const time_t *timer)

timer的值被分解成tm結構,並以本地時區表示。

7 time_t mktime(struct tm *timeptr)

根據本地時區將timeptr指向的結構轉換為time_t值。

8 size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)

根據format中定義的格式規則格式化結構timeptr中表示的時間,並將其儲存到str中。

9 time_t time(time_t *timer)

計算當前日曆時間並將其編碼為time_t格式。

廣告

© . All rights reserved.