[C语言][PTA基础C基础题目集] strtok 函数的理解与应用

一.strtok函数的解释与说明

①strtok函数的功能

Find the next token in a string.

 即查找字符串中的下一个标记.

就是将一个字符串分割成一系列的子串.

②strtok函数的原型

char *strtok( char strToken, const char strDelimit ); 

strToken: 要分割的字符串.

strDelimite: 其中包含了一系列的分隔符.

③strtok函数的返回值

All of these functions return a pointer to the next token found in strToken. They return NULL when no more tokens are found. Each call modifies strToken by substituting a NULL character for each delimiter that is encountered.

所有这些函数都返回指向 strToken 中找到的下一个令牌的指针。当找不到更多令牌时,它们将返回 NULL

④细节说明

需要引用头文件 string.h

每次使用strtok函数都会将strToken中的分隔符替换成为 '\0'(字符串的结束标志).

二.strtok函数的具体使用

①PTA基础编程题目集---7-26 单词长度

②解决问题

#include<stdio.h>
#include<string.h>
int main()
{
    //使用strtok函数 
    //根据 map字符串中的内容,分割字符串str,返回值是分隔符后的字符的地址
    //strtok函数会把需要分割的字符赋值为 '\0'
    //char* strtok(char* str, const char* map);
    
    char str[1000] = { 0 };
    int i = 0;
    while (1)
    {
        scanf("%c", &str[i]);
        if (str[i] == '.')//输入'.'退出输入
            break;
        i++;
    }
    const char map[] = " .";//根据 map中的内容来分割字符串 str
    const char* ret = NULL;//接受首字符的地址
    int arr[1000] = { 0 };
    i = 0;
    //如果分割完毕,就返回空指针 NULL
    //从第二次分割开始,就不需要再传入起始地址了,strtok函数会自动记录分隔符后的字符的地址
    for (ret = strtok(str, map); ret != NULL; ret = strtok(NULL,map))
    {
        arr[i++] = strlen(ret);
    }
    //输出
    for (int j = 0; j < i; j++)
    {
        if (j == i - 1)
        {
            printf("%d", arr[j]);
            return 0;
        }
        printf("%d ",arr[j]);
    }
    return 0;
}

三.总结

1,strtok字符串分割函数是用来分割字符串的,会根据指定的内容来分割字符串,并将分隔符替换为'\0'(是会改变原来的字符串的,因此最好传入的是要分割的字符串的拷贝体),如果分割完毕,就会返回NULL空指针.

2,从第二次分割(第二次调用strtok函数)开始,就不需要再传入起始地址了,strtok函数会自动记录分隔符后的字符的地址.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/453061.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java探索之旅】解密Java中的类型转换与类型提升

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java编程秘籍 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、类型转化1.1 自动类型转换&#xff08;隐式类型转换&#xff09;1.2 强制类型转换…

STM32CubeProgrammer + STLINK V2 烧录

发现使用STM32C8T6 STLINK V2 STM32CubeProgrammer无法成功烧录&#xff0c;总是报错 file error。至于原因&#xff0c;姑且参考&#xff1a;STLINK V2 无法用STM32CubeProgrammer下载程序-CSDN博客 解决方案&#xff1a; 烧录工具由STLINK换成OpenOCD。 stm32f1x.cfg # S…

1.Python是什么?——《跟老吕学Python编程》

1.Python是什么&#xff1f;——《跟老吕学Python编程》 Python是一种什么样的语言&#xff1f;Python的优点Python的缺点 Python发展历史Python的起源Python版本发展史 Python的价值学Python可以做什么职业&#xff1f;Python可以做什么应用&#xff1f; Python是一种什么样的…

NVMFS5A160PLZT1G汽车级功率MOSFET P沟道60 V 15A 满足AEC-Q101标准

关于汽车电子AEC Q101车规认证&#xff1f; 是一种针对分立半导体的可靠性测试认证程序&#xff0c;由汽车电子协会发布。这个认证程序主要是为了确保汽车电子产品在各种严苛的条件下能够正常工作和可靠运行。它包括了对分立半导体的可靠性、环境适应性、温度循环和湿度变化等…

VC考试系统-198-(代码+说明)

转载地址: http://www.3q2008.com/soft/search.asp?keyword198 1.1系统功能分析 1.1.1系统登录管理 &#xff11;&#xff0c;选择教师登录&#xff1a;根据教师专用密码进行登录&#xff0c;完成题库的维护&#xff0c;对试题进行添加&#xff0c;删除&#xff0c;修改。并对…

品牌升级 | 图扑物联正式启用新LOGO

为进一步提升品牌形象&#xff0c;提高品牌影响力&#xff0c;2024年&#xff0c;我们迎来了一次重要的品牌升级——LOGO迭代。此次升级&#xff0c;在传承与创新中既保留了公司的核心精神&#xff0c;又融入了新的视觉语言&#xff0c;不仅代表了公司的新形象、新面貌&#xf…

20、设计模式之责任链模式(Chain)

一、什么是责任链模式 责任链模式属于行为型模式&#xff0c;在这个模式中&#xff0c;通常使用一条链来处理请求&#xff0c;该请求沿着链的顺序传递&#xff0c;直到有对象处理该请求为止&#xff0c;从而达到解耦请求发送者和请求处理者的目的。 二、组成 抽象处理器&#…

HTML超链接标签

文章目录 1. 作用2. 常用属性3. 模拟小米回到顶部 1. 作用 主要作用&#xff1a;实现页面的跳转。 2. 常用属性 href&#xff1a;指定要跳转到的 urltarget &#xff1a;跳转时在如何打开链接文档 _blank&#xff1a;在新窗口打开_self&#xff1a;在本窗口打开&#xff08;…

案例分析篇13:系统分析与设计考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

Net Core 使用Mongodb操作文件(上传,下载)

Net Core 使用Mongodb操作文件&#xff08;上传&#xff0c;下载&#xff09; 1.Mongodb GridFS 文件操作帮助类。 GridFS 介绍 https://baike.baidu.com/item/GridFS/6342715?fraladdin DLL源码&#xff1a;https://gitee.com/chenjianhua1985/mongodb-client-encapsulati…

学习笔记-华为IPD转型2020:1,IPD的重要意义

华为产品开发转型&#xff1a;IPD计划 大多数公司发现&#xff0c;当公司大幅增长时&#xff0c;在较小规模上有效的管理实践不再有效。产品开发过程也是如此。随着华为的发展&#xff0c;该公司遇到了产品故障率更高、开发周期更长和研发成本增加等问题。然后&#xff0c;它转…

vulntarget-k - 内网渗透

标签 xxl-job rce Spring-Cloud-CVE-2022-22947 nacos auth bypass iox 靶机难度比较简单&#xff0c;都是用用 exp 就好了 拓扑图 网卡设置 首先需要使用虚拟网络编辑器&#xff0c;增加 VMnet1、VMnet2、VMnet3 对三张网卡设置子网 IP VMnet1 192.168.100.0 VMnet2 1…

BOOTMGR is missing 问题

同事一台win2k8的虚机在重启后无法引导开机&#xff0c;提示如下信息&#xff1a; 开始就觉得是引导分区设置错了。遂从网上下了一个winpe的镜像&#xff0c;装载到虚机“光驱”中&#xff0c;从光盘引导启动。打开“磁盘管理”后发现&#xff0c;果然&#xff0c;未安装系统…

【趣味学算法】03_兑换钱币

注&#xff1a; 本系列仅为个人学习笔记&#xff0c;学习内容为《算法小讲堂》&#xff08;视频传送门&#xff09;&#xff0c;通俗易懂适合编程入门小白&#xff0c;需要具备python语言基础&#xff0c;本人小白&#xff0c;如内容有误感谢您的批评指正 要将 50 元的软妹币兑…

LeetCode——贪心算法(Java)

贪心算法 简介[简单] 455. 分发饼干[中等] 376. 摆动序列[中等] 53. 最大子数组和[中等] 122. 买卖股票的最佳时机 II[中等] 55. 跳跃游戏 简介 记录一下自己刷题的历程以及代码。写题过程中参考了 代码随想录的刷题路线。会附上一些个人的思路&#xff0c;如果有错误&#xf…

SAP 读写生产订单长文本简介

通常在物料主数据,生产订单,采购订单中都会维护长文本的信息在业务数据中。但是我们在获取长文本的时候需要调用函数才能获取到对应业务数据的长文本的信息。 我们以获取生产订单中的长文本为例 首先需要获取到这个长文本的文本对象,文本名,文本标识 我们可以通过后台表S…

【知识库系统】使用SpringSecurity进行身份认证

一、理论知识部分 SpringSecurity 的官网文档地址&#xff1a;SpringSecurity 这里以24年3月份的 6.2.2 版本为例&#xff0c;记录一下学习过程。 1. SpringSecurity 是基于 Servlet Filters 的&#xff0c;而 Servlet Filters 中的流程如下&#xff1a;首先由客户端 Client…

[LeetCode][LCR 194]二叉树的最近公共祖先

题目 LCR 194. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 例如&#xff0c;给定如下二叉树: root [3,5,1,6,2,0,8,null,null,7,4] 示例 1: 输入: root [3,5,1,6,2,0,8,null,null,7,4], p 5, q 1 输出: 3 解释: 节点 5 和节点 1 的最…

数据库系统概念(第二周 第一堂)

前言 本文的所有知识点、图片均来自《数据库系统概念》&#xff08;黑宝书&#xff09;、山东大学李晖老师PPT。不可用于商业用途转发。 回顾 上周最后一个知识点说到数据库三级模式结构&#xff0c;在这个结构里面我们设立了模式/内模式映像、内模式/外模式映像&#xff0c;主…

Python之闭包

一、概念 在函数嵌套的前提下&#xff0c;内层函数引用外层函数的变量(包括参数)&#xff0c;外层函数又把内层函数当做返回值进行返回。 这个内层函数所引用的外层变量称为 “闭包” def test(): # 外层函数a 33 # 外部变量def test2(): # 内层函数print(a)return test2newFu…