C 標準庫
<assert.h>
簡介
C 標準庫的 assert.h頭檔案提供了一個名為 assert 的宏,它可用于驗證程式做出的假設,并在假設為假時輸出診斷訊息,
已定義的宏 assert 指向另一個宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分,如果已在參考 <assert.h> 的源檔案中定義 NDEBUG 為宏名稱,則 assert 宏的定義如下:
#define assert(ignore) ((void)0)
庫宏
下面列出了頭檔案 assert.h 中定義的唯一的函式:
| 序號 | 函式 & 描述 |
|---|---|
| 1 | void assert(int expression) 這實際上是一個宏,不是一個函式,可用于在 C 程式中添加診斷, |
assert()
描述
C 庫宏 void assert(int expression) 允許診斷資訊被寫入到標準錯誤檔案中,換句話說,它可用于在 C 程式中添加診斷,
宣告
下面是 assert() 宏的宣告,
void assert(int expression);
引數
- expression -- 這可以是一個變數或任何 C 運算式,如果 expression 為 TRUE,assert() 不執行任何動作,如果 expression 為 FALSE,assert() 會在標準錯誤 stderr 上顯示錯誤訊息,并中止程式執行,
回傳值
這個宏不回傳任何值,
實體
下面的實體演示了 assert() 宏的用法,
#include <assert.h>
#include <stdio.h>
int main()
{
int a;
char str[50];
printf("請輸入一個整數值: ");
scanf("%d", &a);
assert(a >= 10);
printf("輸入的整數是: %d\n", a);
printf("請輸入字串: ");
scanf("%s", str);
assert(str != NULL);
printf("輸入的字串是: %s\n", str);
return(0);
}
讓我們在互動模式下編譯并運行上面的程式,如下所示:
請輸入一個整數值: 11
輸入的整數是: 11
請輸入字串: runoob
輸入的字串是: runoob
<ctype.h>
簡介
C 標準庫的 ctype.h 頭檔案提供了一些函式,可用于測驗和映射字符,
這些函式接受 int 作為引數,它的值必須是 EOF 或表示為一個無符號字符,
如果引數 c 滿足描述的條件,則這些函式回傳非零(true),如果引數 c 不滿足描述的條件,則這些函式回傳零,
庫函式
下面列出了頭檔案 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 | 字母字符 小寫字母和大寫字母的集合, |
<errno.h>
簡介
C 標準庫的 errno.h 頭檔案定義了整數變數 errno,它是通過系統呼叫設定的,在錯誤事件中的某些庫函式表明了什么發生了錯誤,該宏擴展為型別為 int 的可更改的左值,因此它可以被一個程式讀取和修改,
在程式啟動時,errno 設定為零,C 標準庫中的特定函式修改它的值為一些非零值以表示某些型別的錯誤,您也可以在適當的時候修改它的值或重置為零,
errno.h 頭檔案定義了一系串列示不同錯誤代碼的宏,這些宏應擴展為型別為 int 的整數常量運算式,
庫宏
下面列出了頭檔案 errno.h 中定義的宏:
| 序號 | 宏 & 描述 |
|---|---|
| 1 | extern int errno 這是通過系統呼叫設定的宏,在錯誤事件中的某些庫函式表明了什么發生了錯誤, |
| 2 | EDOM Domain Error 這個宏表示一個域錯誤,它在輸入引數超出數學函式定義的域時發生,errno 被設定為 EDOM, |
| 3 | ERANGE Range Error 這個宏表示一個范圍錯誤,它在輸入引數超出數學函式定義的范圍時發生,errno 被設定為 ERANGE, |
<float.h>
簡介
C 標準庫的 float.h 頭檔案包含了一組與浮點值相關的依賴于平臺的常量,這些常量是由 ANSI C 提出的,這讓程式更具有可移植性,在講解這些常量之前,最好先弄清楚浮點數是由下面四個元素組成的:
| 組件 | 組件描述 |
|---|---|
| S | 符號 ( +/- ) |
| b | 指數表示的基數,2 表示二進制,10 表示十進制,16 表示十六進制,等等... |
| e | 指數,一個介于最小值 emin 和最大值 emax 之間的整數, |
| p | 精度,基數 b 的有效位數 |
基于以上 4 個組成部分,一個浮點數的值如下:
floating-point = ( S ) p x be
或
floating-point = (+/-) precision x baseexponent
庫宏
下面的值是特定實作的,且是通過 #define 指令來定義的,這些值都不得低于下邊所給出的值,請注意,所有的實體 FLT 是指型別 float,DBL 是指型別 double,LDBL 是指型別 long double,
| 宏 | 描述 |
|---|---|
| FLT_ROUNDS | 定義浮點加法的舍入模式,它可以是下列任何一個值: -1 - 無法確定 0 - 趨向于零 1 - 去最近的值 2 - 趨向于正無窮 3 - 趨向于負無窮 |
| FLT_RADIX 2 | 這個宏定義了指數表示的基數, 基數 2 表示二進制, 基數 10 表示十進制, 基數 16 表示十六進制, |
| FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG |
這些宏定義了 FLT_RADIX 基數中的位數, |
| FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 |
這些宏定義了舍入后不會改變表示的十進制數字的最大值(基數 10), |
| FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP |
這些宏定義了基數為 FLT_RADIX 時的指數的最小負整數值, |
| FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 |
這些宏定義了基數為 10 時的指數的最小負整數值, |
| FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP |
這些宏定義了基數為 FLT_RADIX 時的指數的最大整數值, |
| FLT_MAX_10_EXP +37 DBL_MAX_10_EXP +37 LDBL_MAX_10_EXP +37 |
這些宏定義了基數為 10 時的指數的最大整數值, |
| FLT_MAX 1E+37 DBL_MAX 1E+37 LDBL_MAX 1E+37 |
這些宏定義最大的有限浮點值, |
| FLT_EPSILON 1E-5 DBL_EPSILON 1E-9 LDBL_EPSILON 1E-9 |
這些宏定義了可表示的最小有效數字, |
| FLT_MIN 1E-37 DBL_MIN 1E-37 LDBL_MIN 1E-37 |
這些宏定義了最小的浮點值, |
下面的實體演示了 float.h 檔案中定義的一些常量的使用,
#include <stdio.h>
#include <float.h>
int main()
{
printf("浮點的最大值 = %.10e\n", FLT_MAX);
printf("浮點數最小值 = %.10e\n", FLT_MIN);
printf("數字的位數 = %.10e\n", FLT_MANT_DIG);
}
讓我們編譯和運行上面的程式,這將產生下列結果:
浮點的最大值 = 3.4028234664e+38
浮點數最小值 = 1.1754943508e-38
數字的位數 = 7.2996655210e-312
<limits.h>
簡介
limits.h 頭檔案決定了各種變數型別的各種屬性,定義在該頭檔案中的宏限制了各種變數型別(比如 char、int 和 long)的值,
這些限制指定了變數不能存盤任何超出這些限制的值,例如一個無符號可以存盤的最大值是 255,
庫宏
下面的值是特定實作的,且是通過 #define 指令來定義的,這些值都不得低于下邊所給出的值,
| 宏 | 值 | 描述 |
|---|---|---|
| CHAR_BIT | 8 | 定義一個位元組的位元數, |
| SCHAR_MIN | -128 | 定義一個有符號字符的最小值, |
| SCHAR_MAX | 127 | 定義一個有符號字符的最大值, |
| UCHAR_MAX | 255 | 定義一個無符號字符的最大值, |
| CHAR_MIN | 0 | 定義型別 char 的最小值,如果 char 表示負值,則它的值等于 SCHAR_MIN,否則等于 0, |
| CHAR_MAX | 127 | 定義型別 char 的最大值,如果 char 表示負值,則它的值等于 SCHAR_MAX,否則等于 UCHAR_MAX, |
| MB_LEN_MAX | 1 | 定義多位元組字符中的最大位元組數, |
| SHRT_MIN | -32768 | 定義一個短整型的最小值, |
| SHRT_MAX | +32767 | 定義一個短整型的最大值, |
| USHRT_MAX | 65535 | 定義一個無符號短整型的最大值, |
| INT_MIN | -32768 | 定義一個整型的最小值, |
| INT_MAX | +32767 | 定義一個整型的最大值, |
| UINT_MAX | 65535 | 定義一個無符號整型的最大值, |
| LONG_MIN | -2147483648 | 定義一個長整型的最小值, |
| LONG_MAX | +2147483647 | 定義一個長整型的最大值, |
| ULONG_MAX | 4294967295 | 定義一個無符號長整型的最大值, |
下面的實體演示了 limit.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 number of bits in a byte 8
The minimum value of SIGNED CHAR = -128
The maximum value of SIGNED CHAR = 127
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 = -32768
The maximum value of INT = 32767
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -2147483648
The maximum value of LONG = 2147483647
參考自:https://www.runoob.com/cprogramming/c-tutorial.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/54968.html
標籤:C
