首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Linux C 庫函數速查手冊(一):字符串轉換、字符測試、內存控制

     編輯:關於C語言

Linux C 庫函數速查手冊(一):字符串轉換、字符測試、內存控制

無 IDE 環境下,熟記核心庫函數簽名、語義、頭文件是硬功夫。本文歸納高頻函數,採用「函數名+原型+語義+備註」結構化表格,適合打印牆上速查。

一、字符串轉換函數(<stdlib.h>)

函數原型功能關鍵備註
atofdouble atof(const char *nptr)字符串→double不檢查錯誤,失敗返回 0.0
atoiint atoi(const char *nptr)字符串→int同上,建議用 strtol 替代
atolllong long atoll(const char *nptr)字符串→long longC99 新增
strtoffloat strtof(const char *nptr, char **endptr)字符串→floatendptr 返回解析結束位置,可檢錯
strtollong strtol(const char *nptr, char **endptr, int base)字符串→long(支持進制)推薦:完整錯誤檢查,base=0 自動識別 0x/0 前綴
strtoulunsigned long strtoul(...)字符串→unsigned long同上
toasciiint toascii(int c)字符→ASCII 碼保留低 7 位
toupper/tolowerint toupper(int c)大小寫轉換非字母原樣返回,受 locale 影響
gcvtchar *gcvt(double val, int ndigit, char *buf)浮點數→字符串(四捨五入)結果含小數點/符號,返回 buf

二、字符測試函數(<ctype.h>)

所有函數原型:int isxxx(int c),參數為 int(可傳 EOF),返回非 0 真 / 0 偽。

函數判斷條件備註
isalnum字母或數字isalpha || isdigit
isalpha字母
isascii0~127
isblank空格或 \tC99,GNU 擴展
iscntrl控制字符(0~31, 127)
isdigit0~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>)

函數原型語義關鍵差異
mallocvoid *malloc(size_t size)分配 size 字節**不初始化**,內容不定
callocvoid *calloc(size_t nmemb, size_t size)分配 nmemb 個 size 字節塊**自動歸零**,較慢
reallocvoid *realloc(void *ptr, size_t size)調整 ptr 指向塊大小新增部分**不初始化**;ptr 為 NULL 等價 malloc
freevoid free(void *ptr)釋放 ptr 指向塊ptr 為 NULL 安全無操作;**雙重 free 崩潰**

四、實戰速查技巧

  1. man 3 func_name:查看庫函數手冊(如 man 3 strtol)
  2. apropos keyword:搜索相關函數(如 apropos "string convert")
  3. 編譯鏈接:gcc -Wall -Wextra -std=c11 開啟嚴格檢查
  4. 字符串→數字**首選 strtol/strtod 族**,atoi/atof 已棄用
  5. 內存分配**檢查返回值**,free 後**置 NULL**

下一期將覆蓋:文件操作、時間日期、數學函數、進程/線程控制,敬請期待。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved