strtok_r函数内容
时间: 2023-08-31 18:06:12 浏览: 40
strtok_r 函数是一个用于分割字符串的函数,它是对 strtok 函数的安全版本。strtok_r 函数以参数 str 为输入,以某一个分隔符作为分隔标志,将 str 分割为一个个独立的片段。由于 strtok_r 函数使用了两个参数,而不是全局变量,所以它是线程安全的。
语法:
```
char *strtok_r(char *str, const char *delim, char **saveptr);
```
参数说明:
- str:指向要被分割的字符串。
- delim:指向用于分隔字符串的分隔符字符串。
- saveptr:指向存储内部状态的指针。
返回值:
strtok_r 函数在成功执行后,返回指向当前分割的字符串的指针;如果到达字符串的末尾,则返回空指针。
相关问题
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函数在每次调用时都需要传入分割位置的指针。
strtok_s 与strtok_r 函数的区别
strtok_s 和 strtok_r 都是用于分割字符串的函数,但是它们有以下几点区别:
1. strtok_s 是 C11 标准中新增的函数,而 strtok_r 是 POSIX 标准中定义的函数。
2. strtok_s 函数在使用时需要指定一个额外的参数,即指向保存上一次分割位置的指针,而 strtok_r 函数则将这个指针作为函数参数传入。
3. strtok_s 函数是线程安全的,而 strtok_r 函数则不是。