strtok和strtok_r在C语言中有什么区别?

问题描述 投票:14回答:4

strtok中的strtok_rC有什么区别,我们什么时候应该使用哪个?

c strtok
4个回答
18
投票

strtok等效于(并且通常定义为:)>

char *strtok(char *str, const char *delim) {
    static char *save;
    return strtok_r(str, delim, &save);
}

14
投票

_r版本的函数是可重入的:您可以同时从多个线程或在嵌套循环等中调用它们。可重入版本通常使用一个额外的参数,该参数用于存储调用之间的状态,而不是使用全局变量。


5
投票

[strtok保存静态指针以供下次使用,因为当您将NULL作为第一个参数时,因此您无法并行解析2个字符串。


0
投票

根据文档,strtok_r()函数是strtok()的可重入版本。

© www.soinside.com 2019 - 2024. All rights reserved.