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 参数是无效地址。