strtok_r函数和strtok函数的区别
时间: 2024-03-19 18:37:57 浏览: 160
C语言切割多层字符串(strtok_r strtok使用方法)
strtok_r函数和strtok函数都是用于字符串分割的函数,但它们有一些区别。
1. strtok函数:
- strtok函数是C语言标准库中的函数,用于将字符串按照指定的分隔符进行分割。
- strtok函数会修改原始字符串,将分隔符替换为'\0',并返回分割后的子字符串的指针。
- strtok函数使用静态变量来保存当前分割位置,因此不支持多线程环境下的并发调用。
- strtok函数在第一次调用时传入待分割的字符串,后续调用传入NULL即可继续分割。
2. strtok_r函数:
- strtok_r函数是POSIX标准库中的函数,也用于将字符串按照指定的分隔符进行分割。
- strtok_r函数不会修改原始字符串,而是通过传入一个指向保存当前分割位置的指针来实现。
- strtok_r函数支持多线程环境下的并发调用,因为它使用了传入的指针来保存当前分割位置。
- strtok_r函数在每次调用时都需要传入待分割的字符串和一个指向保存当前分割位置的指针。
总结一下:
- strtok函数会修改原始字符串,而strtok_r函数不会修改原始字符串。
- strtok函数不支持多线程环境下的并发调用,而strtok_r函数支持。
- strtok函数在后续调用时传入NULL,而strtok_r函数在每次调用时都需要传入分割位置的指针。
阅读全文