使用strtok()存储字符串的最终标记?

时间:2017-02-25 00:18:44

标签: c string strtok

假设我有一个名为str的字符串

"token1, token2, token3"

我希望将每个令牌存储到自己的char数组中,如此

char* tok1 = strtok(str, ", ");
char* tok2 = strtok(str, ", ");
char* tok3 = strtok(str, "\0"); //this line is incorrect

但是我在第三个令牌上遇到错误,因为strtok()需要非空输入。由于strtok()需要两个参数(字符串和分隔符),我将如何检索最终的令牌?

1 个答案:

答案 0 :(得分:5)

如果要解析相同的字符串,则对于所有后续调用,第一个参数的值必须为NULL

char* tok1 = strtok(str, ", ");
char* tok2 = strtok(NULL, ", ");
char* tok3 = strtok(NULL, "");
  

在第一次调用strtok()时,应该在str中指定要解析的字符串。在每个应该解析相同字符串的后续调用中,str应为NULL。