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;
- }