我需要在我的程序中调用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
(可重入)。