当前位置: 首页 > news >正文

[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中的内容来分割字符串 strconst 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函数会自动记录分隔符后的字符的地址.

相关文章:

  • C++超详细知识点(四):类的继承和派生
  • 【CMake】顶层 CMakeList.txt 常用命令总结
  • 电源模块测试常用设备与计算公式方法
  • SpringMVC03、HelloSpring
  • 轻量化云组态平台
  • JSONObject在Android Main方法中无法实例化问题
  • php7.3.4连接sqlserver(windows平台)
  • CMS与其他老年代垃圾回收器的区别?
  • OSPF协议
  • 爬虫与DataFrame对象小小结合
  • [创业之路-99/管理者与领导者-141] :绩效管理-1-绩效管理是一把手工程、是系统工程、是化繁为简工程
  • 【Flutter】IOS运行工程二次启动崩溃问题。
  • Transformer家族
  • 汽车IVI中控开发入门及进阶(十四):功能安全
  • Spring Boot+Vue前后端分离项目如何部署到服务器
  • 时间复杂度分析经典问题——最大子序列和
  • .pyc 想到的一些问题
  • android图片蒙层
  • CentOS 7 防火墙操作
  • dva中组件的懒加载
  • HTTP中的ETag在移动客户端的应用
  • JavaScript 一些 DOM 的知识点
  • java概述
  • JS笔记四:作用域、变量(函数)提升
  • JS学习笔记——闭包
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • miaov-React 最佳入门
  • PHP那些事儿
  • React-flux杂记
  • 安卓应用性能调试和优化经验分享
  • 高性能JavaScript阅读简记(三)
  • 前端知识点整理(待续)
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (day 12)JavaScript学习笔记(数组3)
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (七)Java对象在Hibernate持久化层的状态
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)鸿鹄云架构一服务注册中心
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • ..回顾17,展望18
  • .“空心村”成因分析及解决对策122344
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net反混淆脱壳工具de4dot的使用
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET学习教程二——.net基础定义+VS常用设置
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [] 与 [[]], -gt 与 > 的比较
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下