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

C語言 string.h 標準庫函數完全速查手冊

     編輯:關於C語言

內存操作函數

函數原型說明注意事項
memcpyvoid *memcpy(void *dest, const void *src, size_t n)複製 n 字節 src→dest內存區域**不得重疊**,否則行為未定義
memmovevoid *memmove(void *dest, const void *src, size_t n)複製 n 字節,處理重疊內部用臨時緩衝或反向複製保證正確,稍慢於 memcpy
memsetvoid *memset(void *s, int c, size_t n)將 s 前 n 字節置為 cc 取低 8 位;結構體/陣列清零最快方法
memcmpint memcmp(const void *s1, const void *s2, size_t n)比較前 n 字節返回 <0,=0,>0;不受 \0 影響,純二進制比較

字符串複製/連接

函數原型說明安全性
strcpychar *strcpy(char *dest, const char *src)複製含 \0 的字符串**不安全**:無長度檢查,易緩衝區溢出
strncpychar *strncpy(char *dest, const char *src, size_t n)複製至多 n 字符若 src 長度 < n,補 \0 至 n;否則**不保證**以 \0 結尾
strcatchar *strcat(char *dest, const char *src)追加 src 到 dest 末尾**不安全**:需確保 dest 空間足夠
strncatchar *strncat(char *dest, const char *src, size_t n)追加至多 n 字符保證結果以 \0 結尾;仍需空間檢查

字符串比較

函數原型說明區別
strcmpint strcmp(const char *s1, const char *s2)字典序比較(ASCII)區分大小寫,遇 \0 停止
strncmpint strncmp(const char *s1, const char *s2, size_t n)比較前 n 字符長度限制,適合前綴匹配
strcasecmpint strcasecmp(const char *s1, const char *s2)忽略大小寫比較POSIX 擴展,非標準 C
strncasecmpint strncasecmp(const char *s1, const char *s2, size_t n)忽略大小寫前 n 字符POSIX 擴展

查找與長度

函數原型說明返回值
strchrchar *strchr(const char *s, int c)查找字符 c 首次出現位置指針或 NULL
strrchrchar *strrchr(const char *s, int c)查找最後一次出現指針或 NULL
strstrchar *strstr(const char *haystack, const char *needle)查找子串首次出現指針或 NULL
strlensize_t strlen(const char *s)計算長度(不含 \0)size_t 無號

安全替代函數(C11 Annex K / Microsoft 安全版)

// 邊界檢查版本,需定義 __STDC_WANT_LIB_EXT1__ 1
errno_t strcpy_s(char *dest, rsize_t destsz, const char *src);
errno_t strcat_s(char *dest, rsize_t destsz, const char *src);
errno_t strncpy_s(char *dest, rsize_t destsz, const char *src, size_t n);

返回 0 成功,非 0 失敗(如緩衝區太小),並保證目標以 \0 結尾。

常見坑點提醒

  1. strncpy 不保證 \0 結尾 → 手動 dest[n-1]='\0'。
  2. strcat 多次追加導致 O(n²) → 用指針記錄末尾或 stpcpy (GNU 擴展)。
  3. strcmp 返回差值非布爾 → 只判斷 ==0 相等,<0 >0 大小。
  4. 字符串字面量存儲在只讀段 → char *p="abc"; p[0]='x'; 崩潰,應用 char p[]="abc";。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved