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

C語言字符串分割函數strtok用法詳解

     編輯:關於C語言

函數原型

char *strtok(char *s, const char *delim);

頭文件

#include <string.h>

功能說明

將字符串 s 按分隔符字符串 delim 中的任意字符分割為一系列標記(token)。分隔符字符串可包含多個字符,任意一個匹配即視為分隔點。

關鍵使用規則

  1. 首次調用:s 指向要分割的字符串。
  2. 後續調用:s 必須傳 NULL,函數會從上次位置繼續分割。
  3. 返回值:指向下一個標記的指針;無更多標記時返回 NULL。
  4. 副作用:原字符串 s 會被修改(分隔符位置替換為 \0),不可用於常量字符串。
  5. 非線程安全:內部靜態緩衝區保存狀態,多線程環境下請使用 strtok_r (POSIX) 或 strtok_s (C11)。

示例代碼

#include <stdio.h>
#include <string.h>

int main(void) {
    char str[] = "C,語言,字符串,分割,示例";
    const char *delim = ",";
    char *token = strtok(str, delim);
    while (token) {
        printf("Token: %s\n", token);
        token = strtok(NULL, delim);
    }
    return 0;
}
/* 輸出:
Token: C
Token: 語言
Token: 字符串
Token: 分割
Token: 示例
*/

常見陷阱

  • 傳入字符串常量(如 strtok("a,b", ","))導致未定義行為(段錯誤)。
  • 連續分隔符會被視為一個分隔點(空標記被跳過)。
  • 若需保留原字符串,請先複製再分割。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved