首页 > 其他分享 >彻底搞清楚strtok的使用

彻底搞清楚strtok的使用

时间:2024-08-21 18:22:28浏览次数:9  
标签:www 搞清楚 彻底 strtok runoob token str 字符串

char *strtok(char *str, const char *delim)
参数
str -- 要被分解成一组小字符串的字符串。
delim -- 包含分隔符的 C 字符串。
返回值
该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。

注意点!注意点!注意点!

它会修改原字符串,把要找的字符改为null也就是字符'\0'

流程:

1、第一次调用strtok找到第一个-,返回前面字符串的指针,并把-替换为‘\0’

       第一次的token是:This is ‘\0’

2、第二次调用strtok,传入的是NULL,因为不需要从头开始,而是从上面第一步的结束位置开始往下找下一个“-”,就是从-后面的空格开始(空格的ascii码是32)

所以第二次的token是:空格www.runoob.com空格\0

3、没找到,token为剩下的字符串首地址,字符串保持原来样子

第三次token是:空格website\0

4、已经查询到字符串尾部,再次调用strtok,则返回NULL;

第四次token是:NULL;

开始是:"This is - www.runoob.com - website"

最后是:"This is \0 www.runoob.com \0 website"

代码来自网络,具体来源找不到了。另外参考一篇文章:字符串拆分函数strtok实现对字符串的拆分-CSDN博客

#include <string.h>
#include <stdio.h>

int main()
{
    char str[80] = "This is - www.runoob.com - website";
    const char s[2] = "-";
    char *token;

    /* 获取第一个子字符串 */
    token = strtok(str, s);//分隔符是字符串

    /* 继续获取其他的子字符串 */
    while (token != NULL)
    {
        printf("%s\n", token);//打印字符串

        token = strtok(NULL, s);//NULL 参数会记住上次标记的地方 再往后标记
    }
    printf("\n");
    for (int i = 0; i < 34;i++)
        printf("%c", str[i]);//注意这里打印的是字符

    return (0);
}
    输出:
This is 
 www.runoob.com 
 website

This is  www.runoob.com  website   这个str最后没有结束符的,打印字符可以,打印字符串就会出问题 
                                    上面这个话不对,因为原来的str[80] 最后面由\0
        
原字符串的改动是切分符原位置均更改为 '\0',所以内容都还在,可以通过逐个字符打印检验。

多个分割,参考的网址:

标签:www,搞清楚,彻底,strtok,runoob,token,str,字符串
From: https://blog.csdn.net/weixin_39257775/article/details/141389298

相关文章

  • 电脑自动更新怎么彻底关闭,你知道电脑自动更新怎么彻底关闭的办法吗
    彻底关闭电脑自动更新的方法因操作系统而异,但以下是一些常见的解决方案,特别针对Windows10系统:一、使用系统设置关闭自动更新点击屏幕左下角的“开始”按钮,选择“设置”(齿轮形状的图标)。在设置窗口中,找到并点击“更新和安全”选项。在左侧菜单中选择“Windows更新”,然后在右......
  • 免费找回彻底删除照片的软件
    该版本R-Studio已授权,可以使用全部功能。R-Studio是一个功能强大的反删除和数据恢复软件。它采用独特的数据恢复新技术,为恢复FAT12/16/32、NTFS、NTFS5(由Windows2000/XP/2003/Vista/Windows8/Windows10创建或更新)、Ext2FS/Ext3FS(OSXLINUX文件系统)以及UFS1/UFS2(FreeBSD/......
  • 如何把微信的好友彻底的隐藏
    各位精英伙伴们,随着数字化时代的浪潮,微信已成为我们日常生活中不可或缺的通讯枢纽,汇聚了各式各样的社交关系。在这片虚拟的社交疆域中,我们往往珍藏着一些特别的“心灵密使”——那些与我们共享心事的私密好友。为了维护这份独特的亲密度与隐私边界,我们自然渴望将这些珍贵的联系......
  • 三步搞清楚华为路由器配置文件保存原理
    要想搞清楚华为路由器临时配置和永久性配置,其实这个问题非常简单。所谓设备flash可以看成被精简后的Linux操作系统,如果是有Linux基础的朋友会更加容易理解。在用户模式下甚至连基础命令都和Linux一样,这样看起来非常容。在Linux中各类服务配置要想永久生效,都必须修改配置文件......
  • 老照片修复转视频彻底火了,通过AI绘画+视频技术,只需三步超简单出片!AI绘画副业赚钱项目
    大家好,我是灵魂画师向阳最近网上突然爆火的老照片转成视频不知道大家有没有刷到。这些都是通过AI绘画技术+AI视频图生视频技术完成的,先来看一下网上的成片吧。这一内容为什么会突然火起来呢?大概率是抓住了大家心里的一份情怀吧。大家可以将家里面以前的黑白老照片,或者......
  • 图解Kafka | 彻底弄明白 Kafka 两个最重要的配置
    我已经使用Kafka近两年了,我发现有两个配置很重要,但是不太容易理解。这两个配置分别是acks和min.insync.replicas。本文将通过一些插图来帮助理解这2个配置,以便更好的使用Kafka为我们服务。复制我假设你已经熟悉Kafka了,但为了更好地理解这些配置,还是有必要回顾一下Kaf......
  • 常见 字符串库函数 的使用与模拟实现 #strlen #strcpy #strcat #strcmp#strstr #strto
    文章目录前言路漫漫其修远兮,吾将上下而求索。在C语言之中,提供了字符类型,也有字符串的概念,但是却并没有字符串的类型。没有类型就不方便操作,于是乎就提供了一系列的字符串函数来支持对字符串的操作;一、求字符串长度strlen专门用来求字符串长度的函数size_t strl......
  • 【计算机网络】彻底搞懂TCP 的三次握手和四次挥手(超详细,带案例,带图解,带面试题)
    在计算机网络中,TCP(传输控制协议)是一种可靠、有序的数据传输协议。TCP使用三次握手建立连接,四次挥手关闭连接。理解这两个过程对于网络编程和网络协议非常重要。本文将通过详细的文字解析和生动的图示,帮助你彻底搞懂TCP的三次握手和四次挥手。......
  • 足底筋膜炎怎么治疗才能彻底除根
    足底筋膜炎是一种由于足底筋膜长时间受到牵拉、劳损而引起的无菌性炎症,常见于长时间站立、行走或跑步的人群。要彻底除根足底筋膜炎可贴“古顺*敷堂筋膜*贴”治愈同时注意平时的日常预防锻炼。   足底筋膜炎的锻炼预防方法主要包括以下几个方面:一、日常锻炼1、踮脚尖运......
  • HarmonyOS DevEco Studio彻底修改工程名称
    关闭项目将项目文件夹替换为新的名称后重新打开项目将AppScope/app.json5中的bundleName改为新的包名{"app":{"bundleName":"com.example.newname",//改为新的包名"vendor":"example","versionCode":1000000,"......