一、<ctype.h> 字符分類與轉換函數
函數原型:int f(int c),返回非零表示真,零表示假。
| 函數 | 功能 |
| isalnum | 判斷是否為字母或數字 |
| isalpha | 判斷是否為字母 |
| iscntrl | 判斷是否為控制字符 |
| isdigit | 判斷是否為十進制數字 |
| isgraph | 判斷是否可打印且非空格 |
| islower | 判斷是否為小寫字母 |
| isprint | 判斷是否可打印(含空格) |
| ispunct | 判斷是否為標點符號 |
| isspace | 判斷是否為空白字符(\n, \t, \v, \r, 空格) |
| isupper | 判斷是否為大寫字母 |
| isxdigit | 判斷是否為十六進制數字 |
| tolower | 大寫轉小寫 |
| toupper | 小寫轉大寫 |
二、<stdio.h> 字符/字符串輸入輸出
| 函數 | 說明 |
| getchar() | 從標準輸入讀取單字符,返回 int |
| gets(char *s) | 讀取一行到數組(不安全,已棄用) |
| putchar(int c) | 輸出單字符 |
| puts(const char *s) | 輸出字符串並自動換行 |
| sprintf(char *s, fmt, ...) | 格式化輸出到字符串緩衝區 |
| sscanf(char *s, fmt, ...) | 從字符串按格式讀取數據 |
三、<stdlib.h> 字符串轉數值函數
簡易版(無錯誤檢測)
atoi(const char *nptr) → int
atol(const char *nptr) → long
atof(const char *nptr) → double
行為:跳過前導空格,遇非數字字符或 \0 停止。
增強版(支持進制、錯誤定位)
| 函數 | 原型 | 特性 |
| strtol | long strtol(nptr, endptr, base) | base 2-36 或 0(自動識別 0x/0 前綴),endptr 返回結束位置 |
| strtoul | unsigned long strtoul(nptr, endptr, base) | 無符號長整型版本 |
| strtod | double strtod(nptr, endptr) | 雙精度浮點數,支持科學計數法 |
返回值:轉換結果;溢出時返回 ERANGE 並置 errno。
四、<string.h> 字符串核心操作
1. 字符操作函數
| 函數 | 說明 | 注意 |
| strcpy(s1, s2) | 拷貝 s2 到 s1 | 需保證 s1 空間足夠 |
| strncpy(s1, s2, n) | 拷貝前 n 字符 | 不保證以 \0 結尾 |
| strcat(s1, s2) | 追加 s2 到 s1 末尾 | 自動添加 \0 |
| strncat(s1, s2, n) | 追加 s2 前 n 字符 | 自動添加 \0 |
技巧:strcpy(s1, s2 + x) 從第 x 字符開始拷貝;strncpy(s1, s2 + x, n) 從第 x 字符拷貝 n 個。
2. 比較函數
strcmp(s1, s2):逐字符比較,返回 <0, 0, >0
strncmp(s1, s2, n):比較前 n 字符
3. 查找函數
| 函數 | 功能 |
| strchr(s, c) | 查找字符 c 首次出現位置 |
| strrchr(s, c) | 查找字符 c 最後出現位置 |
| strstr(s1, s2) | 查找子串 s2 在 s1 中首次位置 |
| strspn(s1, s2) | s1 中僅含 s2 字符的初始段長度 |
| strcspn(s1, s2) | s1 中不含 s2 字符的初始段長度 |
| strpbrk(s1, s2) | 查找 s1 中首個出現在 s2 的字符 |
| strtok(s1, s2) | 按 s2 中字符分割 s1,**會修改原串** |
4. 內存操作函數(針對內存塊,非字符串)
| 函數 | 功能 | 重疊處理 |
| memcpy(s1, s2, n) | 拷貝 n 字節 | 源目標不可重疊 |
| memmove(s1, s2, n) | 拷貝 n 字節 | 允許重疊 |
| memcmp(s1, s2, n) | 比較前 n 字節 | - |
| memchr(s, c, n) | 前 n 字節查找字符 c | - |
| memset(s, c, n) | 前 n 字節置為字符 c | 常用於初始化 |
5. 其他常用函數
strlen(s):返回字符串長度(不含 \0)
strerror(errnum):返回錯誤碼對應的描述字符串
- 上一篇文章: Objective-C 訪問控制完整指南:@public、@protected、@private 差異詳解
- 下一篇文章: POJ 1742 Coins 多重背包優化解法:O(NM) 狀態壓縮與二進制拆分對比
Copyright ©
程式碼之家 All Rights Reserved