stdin讀取字符,直到換行符或EOF\0結束字符串NULL危險:無緩衝區長度檢查,極易導致緩衝區溢出。C11已移除,務必用fgets()替代。
ctype.h 核心函數速查表
| 函數 | 頭文件 | 功能 | 返回值 |
|---|---|---|---|
isalpha(c) | ctype.h | 是否字母(A-Z,a-z) | 非0=真, 0=假 |
isupper(c) | ctype.h | 是否大寫字母 | 非0=真 |
islower(c) | ctype.h | 是否小寫字母 | 非0=真 |
isdigit(c) | ctype.h | 是否數字(0-9) | 非0=真 |
isxdigit(c) | ctype.h | 是否十六進制數字(0-9,A-F,a-f) | 非0=真 |
isalnum(c) | ctype.h | 是否字母或數字 | 非0=真 |
isspace(c) | ctype.h | 是否空白字符(空格,\t,\n,\r,\v,\f) | 非0=真 |
ispunct(c) | ctype.h | 是否標點符號(非字母數字空白) | 非0=真 |
tolower(c) | ctype.h | 轉小寫 | 轉換後字符 |
toupper(c) | ctype.h | 轉大寫 | 轉換後字符 |
is*函數參數為int,需傳unsigned char或EOF,否則負值行為未定義isalpha(c++)危險)setlocale(LC_CTYPE, "")後判斷依賴當前區域設置總結
gets()已棄用,請用fgets(buf, sizeof(buf), stdin)。
ctype.h提供標準字符分類與大小寫轉換,參數類型為int、多為宏、受locale影響。掌握這些函數能高效處理文本解析、驗證、轉換任務。