strtok - 详细示例解析
定义: Defined in header <string.h>
原型: char *strtok( char *str, const char *delim );
参数: 2个都是字符串(以\0结尾)
功能描述:
该函数的功能是根据分割符分割字符串. 该函数最特殊的地方是它具有
类似"记忆"的功能, 请看下面的示例.
简单示例
#include <stdio.h>
#include <string.h>
#define LEN 100
int main (void) {
char str[LEN] = "one-two-tree-four-five";
char *res; // 保存分割后的结果(必须声明为指针的形式)
char delim[LEN] = "-"; // 分隔符
res = strtok(str, delim);
printf("%s\n", res); // one
printf("%s\n", str); // one
// 这里的原理就是把str第一个 - 替换成 \0
return 0;
}
第一个参数是NULL示例
#include <stdio.h>
#include <string.h>
#define LEN 100
int main (void) {
char str[LEN] = "one-two-tree-four-five";
char *res; // 保存分割后的结果(必须声明为指针的形式)
char delim[LEN] = "-"; // 分隔符
res = strtok(str, delim);
printf("%s\n", res); // one
printf("%s\n", str); // one
// 这里的原理就是把str第一个 - 替换成 \0
res = strtok(NULL, delim); // 这里固定用NULL, 代表接着上次继续分割
printf("%s\n", res); // two
printf("%s\n", str); // one
return 0;
}
根据指定字符分割字符串
#include <stdio.h>
#include <string.h>
#define LEN 100
int main (void) {
char str[LEN] = "one-two";
char *res; // 保存分割后的结果(必须声明为指针的形式)
char delim[LEN] = "-"; // 分隔符
// 第1次找, 返回one
res = strtok(str, delim);
puts(res);
// 第2次找, 返回two
res = strtok(NULL, delim);
if (res == NULL) {
printf("NULL\n");
} else {
puts(res);
}
// 第3次找, 返回NULL
res = strtok(NULL, delim);
if (res == NULL) {
printf("NULL\n");
} else {
puts(res);
}
return 0;
}
完整示例
#include <stdio.h>
#include <string.h>
#define LEN 100
int main (void) {
char str[LEN] = "one-two-tree-four-five";
char *res; // 保存分割后的结果(必须声明为指针的形式)
char delim[LEN] = "-"; // 分隔符
int i;
res = strtok(str, delim);
while (res != NULL) {
printf("%s\n", res);
res = strtok(NULL, delim);
}
// 人工打印str
for (i = 0; i < sizeof str; i++) {
if(str[i] == '\0' && str[i + 1] != '\0') {
printf("\\0");
} else {
printf("%c", str[i]);
}
}
/*
输出:
one
two
tree
four
five
one\0two\0tree\0four\0five\0
*/
return 0;
}
strtok - 详细示例解析的更多相关文章
- C#中的隐式类型var——详细示例解析
从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var.隐式类型可以替代任何类型,它的具体类型由编译器根据上下文推断而出. 下面就让我来总结下隐式类型的一些特点: 1.va ...
- FAT32文件格式示例解析
1.前言 本文主要以一个示例来分析FAT32文件系统的格式,对FAT32文件系统的各个区域详细分析. 2.FAT32文件系统典型分区 3.FAT32文件系统示例 按如下步骤在ubuntu下创建FAT3 ...
- loam详细代码解析与公式推导
loam详细代码解析与公式推导(基础理论知识) 一.基础坐标变换 loam中欧拉角解算都采用R P Y 的解算方式,即先左乘R, 再左乘P, 最后左乘Y,用矩阵表示为: R = Ry * Rp * R ...
- 【极力分享】[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例【转载自https://segmentfault.com/a/1190000004152660】
[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例 本文我们来学习一下在Entity Framework中使用Cont ...
- java连接mysql数据库详细步骤解析
java连接mysql数据库详细步骤解析 第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar 第二步:导入下载的J ...
- xml scheme 示例解析
第一个示例解析 第二个示例解析
- ZjDroid工具介绍及脱壳详细示例
前提条件: 1.Root手机一部 2.需要通过Xposed installer(http://dl.xposed.info/latest.apk)安装Xposed Framework; 一.ZjDro ...
- centos7安装zabbix3.0超详细步骤解析
centos7安装zabbix3.0超详细步骤解析 很详细,感谢作者 以下是我操作的history 622 java -version 623 javac -version 624 grep SELI ...
- virsh的详细命令解析(一)
virsh的详细命令解析 virsh 有命令模式和交互模式如果直接在vrish后面添加参数是命令模式,如果直接写virsh,就会进入交互模式 virsh list 列出所有的虚拟机,虚拟机的状态有(8 ...
随机推荐
- 【BZOJ】1022: [SHOI2008]小约翰的游戏John(博弈论)
http://www.lydsy.com/JudgeOnline/problem.php?id=1022 好神的博弈论. 题解见dzy的blog:http://dzy493941464.is-prog ...
- 【基础练习】【BFS+A*】codevs1225八数码难题题解
题目描写叙述 Description Yours和zero在研究A*启示式算法.拿到一道经典的A*问题,可是他们不会做,请你帮他们. 问题描写叙述 在3×3的棋盘上,摆有八个棋子,每一个棋子上标有1至 ...
- 【mysql-python】安装+基本使用
安装:从SourceForge.net上下载最新的MySQLdb,http://sourceforge.net/projects/mysql-python/ 运行exe文件 使用 From:http: ...
- 【Debian】ftp安装
http://www.2cto.com/os/201107/98311.html http://jingyan.baidu.com/article/adc815133476bdf723bf7393.h ...
- MongoDB基本用法
MongoDB基本用法(增删改高级查询.mapreduce) 分享一下我经常用到的自己写的mongo用法示例 该示例基于当前最新的mongo驱动,版本为mongo-2.10.1.jar,用junit写 ...
- CPictureEx类
CPictueEx类不仅可以显示GIF(包括GIF动画),还可以显示JPEG.BMP.WMF.ICO.CUR等. 参考:https://www.codeproject.com/Articles/142 ...
- zookeeper配置详解
原文地址: http://itindex.net/detail/40187-zookeeper-%E7%AE%A1%E7%90%86%E5%91%98-%E7%AE%A1%E7%90%86 参数名 说 ...
- 三分搜索-ZOJ LightBulb
开始算法基础学习的第一天 今天学习的内容是三分搜索 相对来说很基础的内容(还是觉得脑子不够用) 三分搜索主要用于凸函数查找极大值. (盗个图) 如图所示 若要查找该函数的最大值 可以考虑和二分法一样的 ...
- 记录初次使用tesseract的过程
目录 简介 安装tesseract 安装成功 python应用识别图片 简介 这个谷歌的识别项目早就听说了,使用之后发现,真的很厉害.写下初次简单使用的过程吧. 安装tesseract 谷歌的开源识别 ...
- Eclipse常用快捷键(转载)
编辑相关快捷键 Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率.Eclipse中有如下一些和编辑相关的快捷键. 1. [ALT+/] 此快捷键为用户编辑的好帮手 ...