不用strtok如何写
时间: 2023-10-14 16:22:08 浏览: 60
可以使用字符串操作函数中的strstr和strchr函数来代替strtok函数。strstr函数可以在一个字符串中查找另一个子串,并返回第一个匹配的子串的地址;而strchr函数可以在一个字符串中查找指定字符,并返回该字符首次出现的地址。
下面是一个例子,演示如何使用strstr和strchr函数来代替strtok函数:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello,World,How,Are,You";
char *p = str;
char *q;
while ((q = strchr(p, ',')) != NULL) {
*q = '\0';
printf("%s\n", p);
p = q + 1;
}
printf("%s\n", p);
return 0;
}
```
这个例子中,我们首先定义了一个字符串str,然后使用strchr函数找到每个逗号,并将其替换为字符串结束符\0。接着,我们使用p指针遍历整个字符串,每次找到一个逗号就将其替换为字符串结束符,并输出从p到q-1的子串。最后,我们输出剩下的字符串。
相关问题
写一个strtok的范例
strtok函数可以将一个字符串按照指定的分隔符进行分割,下面是一个strtok的范例:
```
#include <stdio.h>
#include <string.h>
int main () {
char str[80] = "This is a sample string";
const char s[2] = " ";
char *token;
// 获取第一个子字符串
token = strtok(str, s);
// 继续获取其他的子字符串
while( token != NULL ) {
printf( "%s\n", token );
token = strtok(NULL, s);
}
return 0;
}
```
在这个例子中,我们将字符串"This is a sample string"按照空格进行分割,并输出每个子字符串。在第一次调用strtok时,需要传入要分割的字符串和分隔符,之后每次调用strtok时,只需要传入NULL和分隔符即可继续分割。需要注意的是,strtok会修改原始字符串,因此如果需要保留原始字符串,需要先将其复制一份。
strtok
`strtok` 函数是 C 语言标准库中的一个字符串处理函数,用于将一个字符串按照指定的分隔符进行分割,返回被分割的子字符串。它的函数原型如下:
```c
char *strtok(char *str, const char *delim);
```
其中,`str` 是要被分割的字符串,`delim` 是分隔符。第一次调用时,需要将 `str` 指向要被分割的字符串,后续调用需要将 `str` 设置为 NULL;返回值是被分割出来的子字符串。`strtok` 函数使用静态变量维护分割的状态,因此不是线程安全的。
例如,下面的代码将字符串 `"hello,world"` 按照 `,` 进行分割:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello,world";
char *ptr;
ptr = strtok(str, ",");
while (ptr != NULL) {
printf("%s\n", ptr);
ptr = strtok(NULL, ",");
}
return 0;
}
```
输出结果为:
```
hello
world
```