如何从单个字符串中获取第二个令牌?

时间:2017-02-04 01:11:05

标签: c

我正在寻找一种方法来使用strtok从字符串中获取第二个令牌。

    token = strtok(Input, "-");
    strcpy(first, token);
    token = strtok(NULL, "-");
    token = strtok(Input, ".");
    strcpy(name, token);
    token = strtok(NULL, ".");

字符串的设置方式是:blah-blah.blah; blah。

每次循环时,它只需要第一个标记。从来没有拿起第二个。

1 个答案:

答案 0 :(得分:2)

strtok具有破坏性。它修改了最初传入的输入字符串。修改包括将\0放置在正式的分隔符所在的位置。因此,您的Input字符串会“缩短”,并且似乎只包含提取的第一个标记。防止在令牌化过程中丢失位置的最简单修复方法是替换

token = strtok(Input, ".");

token = strtok(NULL, ".");

因为您可以随时更改分隔符。