不止一次使用strtok_s

时间:2017-04-27 18:29:32

标签: c++ c strtok c-strings

我正在使用strtok_s根据用户输入从C-String中提取一个值。但是,我需要能够多次调用此函数。目前,当我这样做时,有一个问题是通过strtok_s。我相信因为它仍指向不同的位置而不是重新开始。 ListOfCoeffs是我的c-string,它只是一个有双打的c-string列表。 Degree是从用户传递到函数的int值。有没有办法重置" strtok这样可以让我多次使用这个功能而不关闭程序?使用strtok_s为糟糕的风格道歉,我对它一点都不熟悉。

char *  pch;
double coeffValue;
char * context;



pch = strtok_s(listOfCoeffs, " ", &context);

if (degree == 0)
{
    // DO NOTHING
}

else
{
    for (int i = 0; i < degree; i++)
    {
        pch = strtok_s(NULL, " ", &context);
    }
}


coeffValue = atof(pch);
return coeffValue;

1 个答案:

答案 0 :(得分:3)

strtok函数系列destructively modify在对其进行标记时输入字符串。如果您希望在开头可能重新开始,则需要先复制该字符串,然后再将其传递给strtok