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

C 語言字串處理函數速查表 (string.h)

     編輯:關於C

前言

本文整理 C 標準庫 <string.h> (及部分擴充) 中常用的記憶體與字串操作函數,包含原型、功能、說明與回傳值,供快速查閱。

記憶體操作函數

函數原型功能說明/回傳值
memccpy void *memccpy(void *dest, const void *src, int c, size_t n); 從 src 複製至多 n 字節到 dest,遇字元 c 則停止 (含 c)。 回傳指向 dest 中 c 之後字元的指標;若前 n 字節無 c 則回傳 NULL。
memchr void *memchr(const void *s, int c, size_t n); 在 s 前 n 字節中尋找字元 c。 找到回傳指向該字元指標;否則 NULL。
memicmp int memicmp(const void *s1, const void *s2, size_t n); 比較 s1、s2 前 n 字節,忽略大小寫。 同 memcmp:s1<s2 回傳 <0;相等 0;s1>s2 回傳 >0。
memmove void *memmove(void *dest, const void *src, size_t n); 複製 n 字節從 src 到 dest,允許記憶體區塊重疊。 回傳 dest。
memset void *memset(void *s, int c, size_t n); 將 s 前 n 字節設為字元 c。 回傳 s。
movmem void movmem(void *src, void *dest, unsigned int n); 舊式函數,功能同 memmove (參數順序相反)。 回傳 dest。
setmem void setmem(void *s, unsigned int n, char c); 舊式函數,功能同 memset (參數順序不同)。 回傳 s。

字串操作函數

函數原型功能說明/回傳值
stpcpy char *stpcpy(char *dest, const char *src); 複製 src (含結束符) 到 dest。 回傳指向 dest 結束符的指標。src、dest 不可重疊。
strcat char *strcat(char *dest, const char *src); 將 src 附加到 dest 末尾 (覆蓋 \0 並加新 \0)。 回傳 dest。需確保 dest 空間足夠。
strchr char *strchr(const char *s, int c); 尋找字串 s 中首次出現字元 c 的位置。 回傳指向該字元指標;找不到回傳 NULL。
strcmp int strcmp(const char *s1, const char *s2); 比較字串 s1、s2 (字典序)。 s1<s2 回傳 <0;相等 0;s1>s2 回傳 >0。
stricmp / strcmpi int stricmp(const char *s1, const char *s2); 比較字串,忽略大小寫。 回傳值同 strcmp。strcmpi 為巨集別名。
strcpy char *strcpy(char *dest, const char *src); 複製 src (含 \0) 到 dest。 回傳 dest。src、dest 不可重疊。
strcspn size_t strcspn(const char *s1, const char *s2); 計算 s1 開頭不包含 s2 任何字元的最大長度。 回傳該長度 (即首個在 s2 出現字元的索引)。
strdup char *strdup(const char *s); 複製字串 s,記憶體由 malloc 配置。 回傳新字串指標;失敗回傳 NULL。需 free 釋放。
strlen size_t strlen(const char *s); 計算字串長度 (不含 \0)。 回傳長度。
strlwr char *strlwr(char *s); 將字串 s 轉為小寫 (僅影響大寫字母)。 回傳 s。
strncat char *strncat(char *dest, const char *src, size_t n); 將 src 前 n 字元附加到 dest。 回傳 dest。
strncmp int strncmp(const char *s1, const char *s2, size_t n); 比較 s1、s2 前 n 字元。 回傳值同 strcmp。
strnicmp / strncmpi int strnicmp(const char *s1, const char *s2, size_t n); 比較前 n 字元,忽略大小寫。 回傳值同 strcmp。strncmpi 為巨集別名。
strncpy char *strncpy(char *dest, const char *src, size_t n); 複製 src 前 n 字元到 dest (不足補 \0,超過不加 \0)。 回傳 dest。

使用建議

  • 優先使用標準 C 函數 (memcpy, memmove, memset, strcpy, strncpy, strcmp 等),可攜性最佳。
  • memicmp, stricmp, strnicmp, strlwr, movmem, setmem, stpcpy 等為 Microsoft 或舊式 Unix 擴充,**非標準 C**,跨平台請自行實作或使用 strcasecmp (POSIX)。
  • 注意 strncpy 不保證以 \0 結尾,使用後建議手動補齊:dest[n-1] = '\0';。
  • strdup 配置記憶體,務必配對 free() 釋放。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved