首页 > 其他分享 >strtok函数

strtok函数

时间:2023-04-18 10:45:10浏览次数:40  
标签:tmp 函数 strtok delim char str 字符串

  • 函数原型
char *strtok (char * str, const char *delim)
  • 头文件
string.h
  • 函数作用
将str字符串中与delim相同的子字符串替换成 ' \ 0 ',然后返回str的首元素地址。(strtok会修改str字符串内容)
  • 使用
第一种情况:str字符串中没有delim子字符串。
void main()
{
    char str[] = "123\n456\n789\n";
    char tmp[] = "abc";
    char *p = strtok(str, tmp);
    if(p)
    {
        printf("str: %s\n", p);
    }
    printf("str: %s\n", str);
}
结果:

结论:str字符串中没有delim子字符串时,不会修改str字符串,strtok函数返回str字符串。 第二种情况:str字符串中只有一个delim子字符串。
void main()
{
    char str[] = "123\n456789";
    char tmp[] = "\n";
    int len = strlen(str);
    print(str, len); // 将str中的每个元素按照十六进制打印
    char *p = strtok(str, tmp);
    if(p)
    {
        printf("str: %s\n", p);
    }
    printf("str: %s\n", str);
    print(str, len); // 将str中的每个元素按照十六进制打印
}
结果:

结论:strtok会将str中的delim子字符串替换成'\0'。 第三种情况:str字符串中有多个delim子字符串。
void main()
{
    char str[] = "123\n456\n789\na";
    char tmp[] = "\n";
    int len = strlen(str);
    print(str, len);
    char *p = strtok(str, tmp);
    while(p)
    {
        printf("p: %s\n", p);
        p = strtok(NULL, tmp);
    }
    printf("str: %s\n", str);
    print(str, len);
}
结果:

结论:每次调用strtok都会将字符串中的delim子字符串给替换掉,需要注意的是strtok函数的返回值和第一个参数,首次调用strtok需要传入str字符串,非首次调用只需传入NULL,这是因为strtok会记录之前传过的字符串。

标签:tmp,函数,strtok,delim,char,str,字符串
From: https://www.cnblogs.com/chien/p/17328739.html

相关文章

  • 8 第八章 函数
    定义函数#定义了一个打招呼的函数defgreet_user(): """显示简单的问候语""" print("Hello!")greet_user()#def用来定义函数#greet_user指的是函数的名字#()括号里可以指定参数用来接收信息,也可以不指定参数#定义以冒号结尾!!!#"""文档字符串""":用来描述函数的......
  • c语言rand函数和srand函数的使用
    rand函数介绍rand()函数用来产生随机数,但是,rand()的内部实现是用线性同余法实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的。它可以随机的产生0~ RAND_MAX(至少是32767) 的随机数(整数),定义类型不同最大值也不同,rand函数包含在头文件stdlib.h中,RAND_MA......
  • shift位置参数左移、函数、退出循环
    shift位置参数左移、函数、退出循环Shift位置参数左移指令shift命令用于对位置参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理。每执行一次,位置参数序列顺次左移一个位置,$#的值减1,用于分别处理每个参数,移出去的参数。[root@nfs2~]#cats......
  • 函数类--递归
    一、问题描述:在主程序中提示输入整数n,编写函数用递归的方法求1+2+3+...+n的值。二、设计思路:  1.设计一个Sum函数,判断所输入的数字,如果为1,则即为1;如果不为1,则n加上函数本身(其中变成n-1),放在sum中。   直到加到1,返回计算得到的值。  2.定义主函数,输入所需要判断的......
  • ArcPy 批处理之 [ hdf转tif ]; [ Con函数 ]; 镶嵌至新栅格 [ Mosaic to New Raster ];
    一、 ArcPy批量将文件夹内的*.hdf文件转为*.tif 文件:#encoding:utf-8 ##hdf2tifimportarcpyimportosinPath=r'E:\Data\S00_DataHdf\\'outPath=r'E:\Data\S01_DataTif\\'fordirpath,dirnames,filenamesinos.walk(inPath):......
  • 函数参数中中括号后面跟逗号是什么意思?
    如:convertScaleAbs(src[,dst[,alpha[,beta]]])->dst函数里面有中括号和逗号,:中括号是可选参数,逗号是参数之间的分隔符[,a[,b]]:嵌套形式表示b是独立于a的可选参数,即在传入a的情况下,b可以自由地选择传入或省略。[,a,b]:扁平形式表示a与b合在一起是一组可选参......
  • 定义函数数组
    interfaceFunctionArrayInterface//定义接口,希望批量执行的函数用统一的名称定义在接口内{voidrunit();}classfuncAimplementsFunctionArrayInterface//函数A{publicvoidrunit(){System.out.println("你运行了函数func......
  • 基于遗传算法的最优潮流 以IEEE30节点的输电网为研究对象 以系统发电成本最小为目标函
    基于遗传算法的最优潮流 以IEEE30节点的输电网为研究对象以系统发电成本最小为目标函数以机组出力为优化变量其中出力与成本的关系是经典的二次函数关系 通过优化求解得到最佳机组出力ID:2550672838253871......
  • 带默认参数值的函数
    1.函数定义时可以预先声名默认的形式参数。调用时,如果给出实参,则用实参初始化形参;如果没有给出实参,则用默认形参值。  intadd(intx=1,inty=2){        //声明默认形参数值     returnx+y;   }   intmain(){     add(23,......
  • Vue3 ref函数处理基本类型或对象类型
    基本类型视频对象类型视频2.ref函数作用:定义一个响应式的数据语法:constxxx=ref(initValue)创建一个包含响应式数据的引用对象(reference对象,简称ref对象)。JS中操作数据:xxx.value模板中读取数据:不需要.value,直接:<div>{{xxx}}</div>备注:接收的数据可以是:基本......