天天看點

Linux 核心可用的字元串分割函數 strsep (String Split Function strsep in Linux Kernel)

C 語言字元串分割可使用 strsep,是 strtok 函數的替代,而且可用于核心,推薦。

char *strsep(char **stringp, const char *delim);
           

函數接受的第一個參數是 in-out prarameter,在函數執行後會被更改,總指向目前要被分割的字元串;第二個參數顧名思義,是分割符。函數傳回分割後的第一個字元串。函數執行的過程,是在 *stringp 中查找分割符,并将其替換為“\0”,傳回分割出的第一個字元串指針(NULL 表示到達字元串尾),并更新 *stringp 指向下一個字元串。示例代碼如下:

#include <linux/string.h> // 或 string.h
#include <stdlib.h>
#include <stdio.h>

int main(int argc, const char *argv[]) {
  char* const delim = "/";
  char str[] = "some/split/string";

  char *token, *cur = str;
  while (token = strsep(&cur, delim)) {
    printf("%s\n", token);
  }
  return 0;
}
           

注意:“char str[]”不能用“char *str”代替,前者填充為數組,後者指向常量不可更改,而 strsep 函數需要更改目标字元串。如果不了解 strsep 的執行過程,很容易用錯。

繼續閱讀