Strtok递归调用指针丢失

时间:2012-04-20 10:44:09

标签: c strtok

我需要在我的程序中调用strtok两次,一次调用另一次。我遇到的问题是第一个strtok在执行内部strtok后无法恢复循环,并且它丢失了第一个char的指针。

这里有一个例子来解释:

主要

 tokens = strtok (stmt, ":");
        while (tokens != NULL) {
            convert_field(tokens);
            tokens = strtok (NULL, ":");
        }

convert_field函数中

tokens = strtok (sub_stmt, ".->//");
        while (tokens != NULL) {
            convert_field(tokens);
            tokens = strtok (NULL, ".->//");
        }

1 个答案:

答案 0 :(得分:5)

strtok不可重入(这意味着您无法在完成上一次执行之前再次调用该函数),您必须使用strtok_r(这是可重入的)。