实现strtok_r()函数
时间: 2023-08-31 11:07:14 浏览: 116
strtok_r()函数在C语言中用于分割字符串。它与strtok()函数类似,但提供了线程安全的版本。下面是一个简单的实现示例:
```c
#include <string.h>
char* strtok_r(char* str, const char* delim, char** saveptr) {
char* token;
// 如果传入的字符串为空,则使用保存的指针
if (str == NULL) {
str = *saveptr;
}
// 跳过分隔符
str += strspn(str, delim);
// 如果已经到达字符串末尾,则返回NULL
if (*str == '\0') {
return NULL;
}
// 查找下一个分隔符的位置
token = str;
str = strpbrk(token, delim);
// 如果找到了分隔符,则将其替换为'\0'并更新保存的指针
if (str != NULL) {
*str = '\0';
*saveptr = str + 1;
} else {
// 如果未找到分隔符,则将保存的指针设置为空
*saveptr = NULL;
}
return token;
}
```
这个函数使用了strspn()和strpbrk()函数来查找分隔符并分割字符串。同时,它接受一个额外的指针参数saveptr用于保存当前位置,以便在后续调用中使用。
注意:这只是一个简单的实现示例,可能不适用于所有情况。在实际应用中,建议使用标准库中提供的strtok_r()函数。
阅读全文