2012-04-20 58 views
2

我需要在我的程序中调用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, ".->//"); 
     } 

回答

5

strtok是不可重入(这意味着你不能打电话该函数再次结束之前的执行),您必须使用strtok_r(w相反,这是可重入的)。