strtok
中的strtok_r
和C
有什么区别,我们什么时候应该使用哪个?
strtok
等效于(并且通常定义为:)>
char *strtok(char *str, const char *delim) {
static char *save;
return strtok_r(str, delim, &save);
}
_r
版本的函数是可重入的:您可以同时从多个线程或在嵌套循环等中调用它们。可重入版本通常使用一个额外的参数,该参数用于存储调用之间的状态,而不是使用全局变量。
[strtok
保存静态指针以供下次使用,因为当您将NULL作为第一个参数时,因此您无法并行解析2个字符串。
根据文档,strtok_r()函数是strtok()的可重入版本。