strtok(切片的使用)
使用规则
使用的基本情况
strcpy
第二次调用的时候传的是空指针
所以打印出来的是
每一次调用函数都会把当前函数的地址记住
所以二次调用的时候 传的是null 连起始位置都不传了 只是传null
但是需要知道的是 当知道三段 你调用第四段的时候 那个时候第三段已经进行销毁 所以这里第四段会返回空指针
升级版本
讲解,这里调用strtok(arr(原始数组),sep(去掉的字符))
这里只要遇见的不是null 也就是最后一步之前 都不是null 所以 切片成功
这里for循环二次调用一下
代码的使用
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "shdphasuid\0as;k\0hjsdab";
const char* p = "@.";
strtok(arr1, p);//这个函数的特性就是 一次只打印一段
printf("%s\n\n\n\n\n", arr1);
char* ret = NULL;
char arr2[] = "shdphasuid@ask@hjsdab";
ret = strtok(arr2, p);
printf("1 %s\n", ret);
ret=strtok(NULL, p);
printf("2 %s\n", ret);
ret=strtok(NULL, p);
printf("3 %s\n", ret);//这里需要知道的是 二次接受的时候需要接受空指针 当空指针运行结束的时候 这里也就是三段 三次 结束之后 空指针也就是没了
ret = strtok(NULL, p);
printf("4 %s\n\n\n\n\n", ret);//此时显示的是空指针
printf("strtok函数的循环使用:\n");
char arr3[] = "shdphasuid@ask@hjsdab";//这里巧妙的运用循环 也就是利用函数的特性 第一次需要传参数arr3 后面是null 只要不等于null那么久一直循环
for (ret = strtok(arr3, p); ret != NULL; ret = strtok(NULL, p))
{
printf("%s ", ret);
}
}