無 IDE 環境下,熟記核心庫函數簽名、語義、頭文件是硬功夫。本文歸納高頻函數,採用「函數名+原型+語義+備註」結構化表格,適合打印牆上速查。
<stdlib.h>)| 函數 | 原型 | 功能 | 關鍵備註 |
|---|---|---|---|
atof | double atof(const char *nptr) | 字符串→double | 不檢查錯誤,失敗返回 0.0 |
atoi | int atoi(const char *nptr) | 字符串→int | 同上,建議用 strtol 替代 |
atoll | long long atoll(const char *nptr) | 字符串→long long | C99 新增 |
strtof | float strtof(const char *nptr, char **endptr) | 字符串→float | endptr 返回解析結束位置,可檢錯 |
strtol | long strtol(const char *nptr, char **endptr, int base) | 字符串→long(支持進制) | 推薦:完整錯誤檢查,base=0 自動識別 0x/0 前綴 |
strtoul | unsigned long strtoul(...) | 字符串→unsigned long | 同上 |
toascii | int toascii(int c) | 字符→ASCII 碼 | 保留低 7 位 |
toupper/tolower | int toupper(int c) | 大小寫轉換 | 非字母原樣返回,受 locale 影響 |
gcvt | char *gcvt(double val, int ndigit, char *buf) | 浮點數→字符串(四捨五入) | 結果含小數點/符號,返回 buf |
<ctype.h>)所有函數原型:int isxxx(int c),參數為 int(可傳 EOF),返回非 0 真 / 0 偽。
| 函數 | 判斷條件 | 備註 |
|---|---|---|
isalnum | 字母或數字 | isalpha || isdigit |
isalpha | 字母 | |
isascii | 0~127 | |
isblank | 空格或 \t | C99,GNU 擴展 |
iscntrl | 控制字符(0~31, 127) | |
isdigit | 0~9 | |
isgraph | 可打印非空格 | isprint && !isspace |
islower | 小寫字母 | |
isprint | 可打印含空格 | |
ispunct | 標點符號 | isgraph && !isalnum |
isspace | 空白字符 | \t\n\v\f\r 空格 |
isupper | 大寫字母 | |
isxdigit | 十六進制數字 | 0-9 A-F a-f |
<stdlib.h>)| 函數 | 原型 | 語義 | 關鍵差異 |
|---|---|---|---|
malloc | void *malloc(size_t size) | 分配 size 字節 | **不初始化**,內容不定 |
calloc | void *calloc(size_t nmemb, size_t size) | 分配 nmemb 個 size 字節塊 | **自動歸零**,較慢 |
realloc | void *realloc(void *ptr, size_t size) | 調整 ptr 指向塊大小 | 新增部分**不初始化**;ptr 為 NULL 等價 malloc |
free | void free(void *ptr) | 釋放 ptr 指向塊 | ptr 為 NULL 安全無操作;**雙重 free 崩潰** |
man 3 func_name:查看庫函數手冊(如 man 3 strtol)apropos keyword:搜索相關函數(如 apropos "string convert")gcc -Wall -Wextra -std=c11 開啟嚴格檢查strtol/strtod 族**,atoi/atof 已棄用free 後**置 NULL**下一期將覆蓋:文件操作、時間日期、數學函數、進程/線程控制,敬請期待。