据此description , strtok()
通过给定的分隔符将字符串分隔为标记,返回指向字符串中找到的第一个标记的指针。所有后续 token 都需要通过循环遍历,如链接中给出的示例代码。
每个 token 是否自动以 NULL
终止?即,我可以简单地将每个标记分配给一个变量并使用它,还是需要将 strncpy()
复制到分配的空间?
例如,这有效吗?
char str[80] = "This is - www.tutorialspoint.com - website";
const char s[2] = "-";
char *token;
char *test[4];
int test_count = 0;
memset(test, 0x00, 4);
/* get the first token */
token = strtok(str, s);
/* walk through other tokens */
while( token != NULL ) {
test[test_count] = token;
test_count++;
token = strtok(NULL, s);
}
最佳答案
strtok()
对原始输入字符串起作用,方法是将分隔符列表中第一次出现的字符替换为 '\0'
。所以是的,这就是您所描述的预期用途。
旁注:
不要写这样的东西
const char s[2] = "-";
刚刚使用
const char s[] = "-";
让编译器自动确定正确的大小
在这种特殊情况下,只需将
"-"
传递给strtok()
(或将#define
传递给“-”
) 就可以了,一个像样的编译器可以识别相同的字符串文字并只创建它们的一个实例。以防万一查看一些代码会有所帮助,这里是 a simple strtok implementation我不久前也这么做过。
关于c - 如何使用 strtok() token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50220197/