2012-04-20 99 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相反,這是可重入的)。