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

C語言字符串操作函數大全:27個標準庫函數詳解與示例

     編輯:關於C

字符串處理是 C 程式設計的高頻需求。標準庫 <string.h> 提供豐富函數,本文分類整理 27 個常用函數,附帶原型、功能說明與可編譯示例,便於快速查閱。

1. 複製與拼接

函數原型說明示例
strcpychar *strcpy(char *dest, const char *src)複製字符串含結束符strcpy(buf, "hello");
strncpychar *strncpy(char *dest, const char *src, size_t n)複製前 n 字符,不足補 \0strncpy(buf, src, 5); buf[5]='\0';
stpcpychar *stpcpy(char *dest, const char *src)複製並返回 dest 末尾指針 (GNU 擴展)
strcatchar *strcat(char *dest, const char *src)拼接 src 到 dest 末尾strcat(buf, " world");
strdupchar *strdup(const char *s)分配新記憶體複製字符串,需 freechar *p = strdup(s);

2. 比較函數

函數大小寫敏感比較長度返回值
strcmp敏感整串< 0, =0, >0
strncmp敏感前 n 字符同上
stricmp / strcmpi不敏感整串同上
strnicmp / strncmpi不敏感前 n 字符同上

注意:stricmp 等為非標準擴展,跨平台建議自行實現或用 strcasecmp (POSIX)。

3. 查找與掃描

函數功能返回值
strchr查找字符首次出現位置指針或 NULL
strrchr查找字符最後一次出現位置指針或 NULL
strstr查找子串首次出現位置指針或 NULL
strpbrk查找集合中任一字符首次出現指針或 NULL
strcspn計算初始段落不含集合字符的長度長度 (size_t)
strspn計算初始段落僅含集合字符的長度長度 (size_t)
strtok按分隔符分割字符串 (破壞原串、非線程安全)下一 token 指針

4. 修改與轉換

函數功能
strset將所有字符設為指定值
strnset前 n 字符設為指定值
strrev字符串反轉 (Microsoft 擴展)
strupr / strlwr大小寫轉換 (非標準)
strerror根據 errno 返回錯誤描述字符串
strtod字符串轉 double
strtol字符串轉 long,支援進制
swab交換相鄰字節 (大小端轉換)

經典示例:strtok 分割 CSV

char line[] = "apple,banana,orange";
char *token = strtok(line, ",");
while (token) {
    puts(token);
    token = strtok(NULL, ",");
}
// 輸出: apple / banana / orange (各佔一行)

避坑指南

  • 緩衝區溢出:strcpy/strcat 不檢查長度,優先用 strncpy/strncat 或 snprintf。
  • strtok 非線程安全、修改原字符串,多線程用 strtok_r (POSIX) 或 C++ stringstream。
  • 字符串字面量不可修改:char *p = "abc"; p[0]='x'; // UB,應用 char p[] = "abc";。
  • 大小寫不敏感函數非標準,跨平台項目建議封裝統一介面。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved