热门问题
时间线
聊天
视角
ctype.h
来自维基百科,自由的百科全书
Remove ads
ctype.h
是C標準函數庫中的標頭檔,定義了一批C語言字元分類函數(C character classification functions),用於測試字元是否屬於特定的字元類別,如字母字元、控制字元等等。既支援單位元組字元,也支援寬字元。[1]
實現
現代的C庫中,字元分類函數一般不用比較測試(comparison tests)實現,而是靜態查表來實現。
例如,建立一個由256個8位元寬整陣列成的陣列,每個整數的每位對應字元的特定的分類性質,如屬於數字、屬於字母等等。如果最低位表示屬於數字性質,那麼可以寫成如下代碼:
#define isdigit(x) (TABLE[x] & 1)
早期版本的Linux使用了潛在犯錯的方法,類似於:
#define isdigit(x) ((x) >= '0' && (x) <= '9')
這會產生問題,如巨集參數x
具有副作用---例如,如果呼叫isdigit(x++)
或isdigit(run_some_program())
,可能不是很顯然,isdigit
的參數將被求值兩次。所以,查表的方法被廣泛使用。
函數
單位元組字元處理常式在ctype.h
(C++的cctype
)中聲明。寬位元組字元處理常式在wctype.h
(C++的cwctype
)中聲明.
Remove ads
參考文獻
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads