我正在寻找一种方法来使用strtok从字符串中获取第二个令牌。
token = strtok(Input, "-");
strcpy(first, token);
token = strtok(NULL, "-");
token = strtok(Input, ".");
strcpy(name, token);
token = strtok(NULL, ".");
字符串的设置方式是:blah-blah.blah; blah。
每次循环时,它只需要第一个标记。从来没有拿起第二个。
答案 0 :(得分:2)
strtok
具有破坏性。它修改了最初传入的输入字符串。修改包括将\0
放置在正式的分隔符所在的位置。因此,您的Input
字符串会“缩短”,并且似乎只包含提取的第一个标记。防止在令牌化过程中丢失位置的最简单修复方法是替换
token = strtok(Input, ".");
带
token = strtok(NULL, ".");
因为您可以随时更改分隔符。