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

C 標準庫函數速查手冊:分類匯總、常用原型、頭檔與連結庫對照

     編輯:關於C語言

使用說明

本文匯總 C 標準庫 (C89/C99/C11) 及常見 POSIX/Windows 擴展函數,按功能分類列出**核心原型**、**所需頭檔**、**典型用途**。作為開發時快速查閱參考。詳細語義請查閱 `man 3 func` / MSDN / cppreference.com。

1. 字元分類與轉換 ``

函數功能返回
`isalnum(c)`字母或數字非0/0
`isalpha(c)`字母非0/0
`iscntrl(c)`控制字元 (0x00-0x1F, 0x7F)非0/0
`isdigit(c)`十進制數字 '0'-'9'非0/0
`isgraph(c)`可列印非空白 (0x21-0x7E)非0/0
`islower(c)`小寫字母非0/0
`isprint(c)`可列印含空白 (0x20-0x7E)非0/0
`ispunct(c)`標點符號非0/0
`isspace(c)`空白字元 (空格,\t,\n,\v,\f,\r)非0/0
`isupper(c)`大寫字母非0/0
`isxdigit(c)`十六進制數字非0/0
`tolower(c)`轉小寫轉換後字元
`toupper(c)`轉大寫轉換後字元

注意:參數為 `int` (需可表示 `EOF`),傳入 `char` 必轉 `unsigned char` 避免負值索引 UB:`isalpha((unsigned char)ch)`。

2. 字串操作 ``

函數功能關鍵點
`strlen(s)`長度 (不含 `\0`)`size_t`
`strcpy(dst, src)`複製 (含 `\0`)**危險**無長度檢查
`strncpy(dst, src, n)`複製最多 n 字元**不保證** `\0` 結尾
`strcat(dst, src)`追加**危險**緩衝區溢出
`strncat(dst, src, n)`追加最多 n 字元保證 `\0` 結尾
`strcmp(s1, s2)`字典序比較<0,=0,>0
`strncmp(s1, s2, n)`比較前 n 字元
`strchr(s, c)`尋找字元首次出現返回指針/NULL
`strrchr(s, c)`尋找字元最後出現
`strstr(hay, needle)`尋找子字串
`strpbrk(s, set)`尋找集合中任一字元
`strspn(s, set)`前綴匹配集合長度
`strcspn(s, set)`前綴不匹配集合長度
`strtok(s, delim)`分割字串 (破壞原串、非線程安全)首次傳 s,後續傳 NULL
`strerror(errno)`錯誤碼轉訊息字串線程安全版 `strerror_r`
`memset(s, c, n)`記憶體填充字元高效置零/初始化
`memcpy(dst, src, n)`記憶體複製 (無重疊)最快複製
`memmove(dst, src, n)`記憶體複製 (允許重疊)安全覆蓋
`memcmp(s1, s2, n)`記憶體比較

安全替代 (C11 Annex K / POSIX):`strcpy_s`, `strncpy_s`, `strcat_s`, `snprintf`, `memcpy_s`。

3. 數學運算 `` (連結 `-lm`)

分類函數 (double 版)float 版long double 版
三角`sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `atan2``sinf`... `atan2f``sinl`... `atan2l`
雙曲`sinh`, `cosh`, `tanh`, `asinh`, `acosh`, `atanh`同前綴 f同前綴 l
指數對數`exp`, `exp2`, `expm1`, `log`, `log2`, `log10`, `log1p`
冪/根`pow`, `sqrt`, `cbrt`, `hypot`
取整/餘數`floor`, `ceil`, `trunc`, `round`, `fmod`, `remainder`, `fma`
絕對值`fabs``fabsf``fabsl`
分解`frexp`, `ldexp`, `modf`, `ilogb`, `scalbn`
誤差/特殊`erf`, `erfc`, `tgamma`, `lgamma`, `nan`, `nextafter`

錯誤處理:`errno` (EDOM, ERANGE) + `math_errhandling`。`#pragma STDC FENV_ACCESS ON` 開啟浮點環境存取。

4. 標準輸入輸出 ``

類別關鍵函數
檔案操作`fopen`, `fclose`, `fflush`, `freopen`, `setbuf`, `setvbuf`, `fseek`, `ftell`, `rewind`, `fgetpos`, `fsetpos`, `feof`, `ferror`, `clearerr`, `fileno`, `tmpfile`, `tmpnam`, `remove`, `rename`
格式化 I/O`printf`, `fprintf`, `sprintf`, `snprintf`, `vprintf`, `vfprintf`, `vsprintf`, `vsnprintf`, `scanf`, `fscanf`, `sscanf`, `vscanf`, `vfscanf`, `vsscanf`
字元/行 I/O`fgetc`, `fputc`, `getc`, `putc`, `getchar`, `putchar`, `fgets`, `fputs`, `gets` (已棄用/移除), `ungetc`
二進制 I/O`fread`, `fwrite`
標準流`stdin`, `stdout`, `stderr`

5. 動態記憶體 ``

函數功能
`malloc(size)`分配未初始化
`calloc(n, size)`分配並歸零
`realloc(ptr, size)`調整大小
`free(ptr)`釋放
`aligned_alloc(align, size)`C11 對齊分配

6. 時間日期 ``

函數/類型功能
`time_t time(time_t*)`當前時間戳 (秒)
`clock_t clock()`處理器時間 (ticks)
`struct tm`日曆時間分量
`gmtime`, `localtime`時間戳 → `tm` (UTC/本地)
`mktime``tm` → 時間戳 (本地)
`strftime`格式化 `tm` → 字串
`asctime`, `ctime`固定格式輸出 (非線程安全)
`difftime`兩時間戳差 (秒)
`timespec_get` (C11)高精度時間 (納秒)

7. 程序控制與環境 `` / `` (POSIX)

函數功能
`exit(status)`正常終止 (執行 atexit、刷新流)
`_Exit(status)` / `_exit()`立即終止 (不清理)
`atexit(func)`註冊退出處理器
`system(cmd)`執行 Shell 命令
`getenv(name)`獲取環境變數
`bsearch`, `qsort`二分查找、快速排序
`abs`, `labs`, `llabs`, `div`, `ldiv`, `lldiv`整數絕對值/除法
`rand`, `srand`偽隨機數

8. POSIX / 系統級擴展 (Linux/Unix 常用) ``, ``, ``, ``, ``, ``

  • 檔案描述符 I/O:`open`, `close`, `read`, `write`, `lseek`, `stat`, `fstat`, `fsync`, `dup`, `dup2`, `pipe`。
  • 目錄操作:`opendir`, `readdir`, `closedir`, `mkdir`, `rmdir`, `chdir`, `getcwd`。
  • 進程控制:`fork`, `exec*`, `wait`, `waitpid`, `kill`, `getpid`, `getppid`, `sleep`, `usleep`。
  • 訊號:`signal`, `sigaction`, `raise`, `sigprocmask`, `pause`。
  • 執行緒 (pthread):`pthread_create`, `join`, `mutex`, `cond`, `rwlock`, `key_create` (TLS)。
  • 網路 (socket):`socket`, `bind`, `listen`, `accept`, `connect`, `send`, `recv`, `getaddrinfo`。

9. Windows 特有 API (Win32) ``

  • 字串:`lstrcpy`, `lstrlen`, `wsprintf` (TCHAR 版)。
  • 記憶體:`GlobalAlloc`, `LocalAlloc`, `VirtualAlloc`, `HeapCreate`。
  • 檔案:`CreateFile`, `ReadFile`, `WriteFile`, `CloseHandle`, `FindFirstFile`, `CopyFile`, `MoveFile`。
  • 執行緒:`CreateThread`, `WaitForSingleObject`, `CriticalSection`, `Event`, `Mutex`, `SRWLock`。
  • 時間:`GetSystemTime`, `GetLocalTime`, `QueryPerformanceCounter` (高精度)。
  • 錯誤:`GetLastError`, `FormatMessage`。

10. 斷言與診斷 ``, ``, ``, ``

  • `assert(expr)`:除錯斷言 (NDEBUG 關閉)。
  • `errno`:錯誤碼全域變數 (執行緒局部)。
  • `setjmp`/`longjmp`:非局部跳轉 (跨函數返回/異常模擬)。
  • `va_start/arg/end/copy`:可變參數處理。

查閱建議

  1. **線上權威**:cppreference.com (標準 C/C++ 完整參考)。
  2. **Linux 手冊**:`man 3 func_name` (含 POSIX)。
  3. **Windows**:Microsoft Learn (MSDN) 搜尋函數名。
  4. **編譯器內建**:GCC/Clang `__builtin_*` (如 `__builtin_popcount`, `__builtin_expect`),無需頭檔,極快。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved