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

C 語言標準庫字串函數用法大全:strcpy、strcat、strcmp 等完整範例

     編輯:關於C語言

常用字串函數速查表

函數功能原型關鍵行為
strcpy字串複製char *strcpy(char *dest, const char *src);複製含結束符,目的地需足夠空間
strncpy指定長度複製char *strncpy(char *dest, const char *src, size_t n);不足 n 補 \0,超過 n 不加 \0
strcat字串串接char *strcat(char *dest, const char *src);追加到 dest 末尾,需確保空間
strncat指定長度串接char *strncat(char *dest, const char *src, size_t n);最多附加 n 字元,自動加 \0
strcmp字串比較int strcmp(const char *s1, const char *s2);依 ASCII 碼序,相等回 0,大於回正,小於回負
strncmp指定長度比較int strncmp(const char *s1, const char *s2, size_t n);最多比較 n 字元
strchr尋找字元首次出現char *strchr(const char *s, int c);回傳指標或 NULL
strrchr尋找字元最後出現char *strrchr(const char *s, int c);反向搜尋
strstr尋找子字串char *strstr(const char *haystack, const char *needle);回傳首次出現位址
strlen字串長度size_t strlen(const char *s);不含結束符
strspn符合字元集長度size_t strspn(const char *s, const char *accept);從開頭計算連續屬於 accept 的字元數
strcspn不符合字元集長度size_t strcspn(const char *s, const char *reject);從開頭計算連續不屬於 reject 的字元數
strpbrk尋找任一字元集字元char *strpbrk(const char *s, const char *accept);回傳首次出現任一 accept 字元位址
strtok字串切割char *strtok(char *s, const char *delim);破壞原字串,非執行緒安全
memcpy記憶體複製void *memcpy(void *dest, const void *src, size_t n);不處理重疊區域
memmove記憶體移動void *memmove(void *dest, const void *src, size_t n);正確處理重疊區域
memset記憶體設定void *memset(void *s, int c, size_t n);逐位元組填充
memcmp記憶體比較int memcmp(const void *s1, const void *s2, size_t n);逐位元組比較

使用陷阱提醒

  1. 緩衝區溢位:strcpy/strcat 不檢查邊界,優先使用 strncpy/strncat 或 snprintf。
  2. strncpy 不保證以 \0 結尾,複製後請手動加 dest[n-1] = '\0'。
  3. strtok 會修改原字串且非執行緒安全,多執行緒環境請用 strtok_r 或 C++ std::stringstream。
  4. 字串比較嚴格區分大小寫,需忽略大小寫請用 strcasecmp(POSIX)或 _stricmp(Windows)。

實務建議

現代 C++ 專案優先使用 std::string 與 std::string_view,僅在與 C API 介接或極度效能敏感區域使用 C 風格字串函數。

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