char *strsep(char **stringp, const char *delim)
参数1:指向字符串的指针的指针,
参数2:指向分隔符的指针
功能:以参数2所指的字符作为分界符,将参数1的值所指的字符串分割开,返回值为被参数2分开的左边的那个字符串,同时会导致参数1的值(指向位置)发生改变,即,参数1的指向的对象会指向分隔符号右边的字符串的起始位置,很拗口,因为是指针的指针,这个函数主要用来提取ip 或者时间里面的各项
实例
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[] = "hello-world!";
char *p = s;
char *d = "-";
printf("start argv: %s %p %p\n", p,p,&p);
printf("ret:%s\n", strsep(&p, d));
printf("argv: %s %p %p\n", p,p,&p);
printf("ret:%s\n", strsep(&p, d));
printf("argv: %s %p %p\n", p,p,&p);
return 0;
}
执行效果如下
注意这个函数会改变参数1指向对象的内容,如果不想改变,需要 可以strdup 函数拷贝一份,不过记得要释放