为什么我们在strtok()中使用NULL?

strtok()将指针存储在静态变量中,所以在它的第二次调用中,当我们传递null时,strtok()从静态变量中获取指针。

如果您提供相同的字符串名称,它将再次从头开始。

此外,strtok()是破坏性的,即它会对原始字符串进行更改。所以要确保你总是有一份原始版本的副本。

使用strtok()的另一个问题是,由于它将地址存储在静态变量中,因此在多线程编程中多次调用strtok()将导致错误。为此,请使用strtok_r()。