C语言 Strtok 递归调用指针丢失



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

为了解释更多,这里有一个例子:

 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, ".->//");
        }

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

最新更新