strtok函数的 原理及用法
时间: 2023-09-04 10:07:22 浏览: 102
`strtok` 函数是 C 标准库中的一个字符串处理函数,其原型为:
```c
char *strtok(char *str, const char *delim);
```
`strtok` 函数将字符串 `str` 按照分隔符 `delim` 进行分割,并且在第一次调用时,需要将 `str` 作为参数传入,以后调用时将 `str` 设置为 `NULL` 即可。调用 `strtok` 函数时,它会返回分割后的第一个子串,并且将 `str` 指向下一个子串的起始位置,直到所有子串都被返回为止。如果 `str` 已经为 `NULL`,则 `strtok` 函数将继续从上一次调用结束的位置开始搜索。
以下是一个使用 `strtok` 函数将字符串按照空格分割的例子:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello world";
char *token = strtok(str, " ");
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, " ");
}
return 0;
}
```
输出结果为:
```
hello
world
```
在上面的代码中,首先调用 `strtok(str, " ")` 函数将字符串按照空格分割,并返回第一个子串 `"hello"`。然后在循环中,继续调用 `strtok(NULL, " ")` 函数,它将返回下一个子串 `"world"`,直到所有子串都被返回为止。
需要注意的是,`strtok` 函数会修改原始字符串,将分隔符替换为 `NULL`,因此如果需要保留原始字符串,需要先将原始字符串复制一份进行操作。此外,`strtok` 函数并不是线程安全的,如果需要在多线程环境下使用,需要使用 `strtok_r` 函数代替。
阅读全文