strtok模拟实现
时间: 2023-10-14 09:03:23 浏览: 98
strtok函数的使用示例
strtok函数是C语言中的一个字符串分割函数,它可以将一个字符串按照指定的分隔符进行分割,并返回分割后的子字符串。下面是一个简单的strtok模拟实现:
```c
#include <stdio.h>
#include <string.h>
char* my_strtok(char* str, const char* delim) {
static char* p = NULL;
if (str != NULL) {
p = str;
} else {
if (p == NULL) {
return NULL;
}
str = p;
}
char* start = str;
while (*p) {
if (strchr(delim, *p)) {
*p++ = '\0';
return start;
}
p++;
}
if (*start == '\0') {
return NULL;
} else {
return start;
}
}
int main() {
char str[] = "Hello World! This is a test.";
const char delim[] = " ";
char* token = my_strtok(str, delim);
while (token != NULL) {
printf("%s\n", token);
token = my_strtok(NULL, delim);
}
return 0;
}
```
这段代码中的`my_strtok`函数模拟了`strtok`函数的功能。它通过静态变量`p`来保存当前位置,第一次调用时传入字符串指针并保存在`p`中,后续调用传入`NULL`则继续从上次结束的位置开始分割。在每次循环中,它会判断当前字符是否为分隔符,如果是则将其替换为`\0`,并返回上一个分割的子字符串的起始位置。当遇到字符串末尾时,如果上一个分割的子字符串非空,则返回该子字符串,否则返回`NULL`表示已经分割完毕。
这段代码的输出结果为:
```
Hello
World!
This
is
a
test.
```
这样就实现了一个简单的strtok模拟函数。注意,这只是一个简单的示例,实际使用时需要考虑更多的边界情况和错误处理。
阅读全文