如何拆分 const char *?

How to split a const char *?

我有一个 const char* 代表一条路径 我想将它拆分成字符 / 处的字符串数组,这样我就可以逐步进行搜索。

我试过

char* str2 = strtok(str1,"/")

但是我的编译器returns一个

warning: initialization discards ‘const’ qualifier from pointer target type

如何在没有任何警告的情况下进行拆分?

strtok(3)strtok_r(3) 就地改变字符串,这会阻止您传递 const 字符串。无论如何你都会想要传递一个副本,因为你不希望你的初始字符串被变异并变得不可用。

以下是使用 strdup(3) 的方法:

char* strtmp = strdup(str1);
char* str2 = strtok(strtmp,"/");
// Use str2 here
free(strtmp);