我需要在我的程序中调用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, ".->//");
}
答案 0 :(得分:5)
strtok
不可重入(这意味着您无法在完成上一次执行之前再次调用该函数),您必须使用strtok_r
(这是可重入的)。