假设我有一个名为str的字符串
"token1, token2, token3"
我希望将每个令牌存储到自己的char数组中,如此
char* tok1 = strtok(str, ", ");
char* tok2 = strtok(str, ", ");
char* tok3 = strtok(str, "\0"); //this line is incorrect
但是我在第三个令牌上遇到错误,因为strtok()需要非空输入。由于strtok()需要两个参数(字符串和分隔符),我将如何检索最终的令牌?
答案 0 :(得分:5)
如果要解析相同的字符串,则对于所有后续调用,第一个参数的值必须为NULL
:
char* tok1 = strtok(str, ", ");
char* tok2 = strtok(NULL, ", ");
char* tok3 = strtok(NULL, "");
在第一次调用strtok()时,应该在str中指定要解析的字符串。在每个应该解析相同字符串的后续调用中,str应为NULL。