strtok_r 子例程
用途
将字符串分为一系列标记。
库
线程安全 C 库 (libc_r.a)
语法
#include<string.h>
char *strtok_r (String, Separators, Pointer);
char *String;
const char *Separators;
char **Pointer;描述
注: 在多线程环境中使用 strtok_r 子例程。
strtok_r 子例程将 String 参数所指向的字符串分成一系列标记,每个标记由 Se比较器 参数所指向的字符串中的一个字节定界。 Pointer 参数保存 strtok_r 子例程对 String 参数执行扫描所需的信息。 在第一次调用 strtok_r 子例程时,将忽略作为 Pointer 参数传递的值。
序列中的第一个调用将在 String 参数中搜索 Se比较器 参数所指向的当前分隔符字符串中未包含的第一个字节。 如果找不到此类字节,那么 String 参数中不存在任何标记,并且将返回空指针。 如果找到这样的字节,那么它是第一个令牌的开始。 strtok_r 子例程还会在第一次出现 Se比较器 参数之后使用令牌的起始地址来更新 Pointer 参数。
在后续调用中,应该将空指针作为第一个参数传递到 strtok_r 子例程,而不是作为 String 参数。 使用空指针作为第一个自变量的值的每个后续调用都会从 Pointer 参数开始搜索,并将其用作第一个标记。 否则,子例程的行为不会更改。 strtok_r 子例程将返回连续标记,直到没有任何标记保留为止。 Se比较器 参数可能与对另一个调用不同。
参数
| 项 | 描述 |
|---|---|
| String | 指向操作从中返回结果的字符串。 |
| 分隔符 | 指向包含操作源的字符串。 |
| POINTER | 指向用户提供的指针。 |
错误代码
如果发生以下情况, strtok_r 子例程将失败:
| 项 | 描述 |
|---|---|
| Efault | String 参数是无效地址。 |