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 ...
随机推荐
- Angular2 兼容 UC浏览器、QQ浏览器、猎豹浏览器
找到/src/polyfills.ts文件 把/** IE9, IE10 and IE11 requires all of the following polyfills. **/下注释掉的代码恢复 ...
- jquery获取设置input值
$("#input").val("123"),注意val()这个函数$("#input").val("123"),//给 ...
- Linux命令之乐--rename
用来修改文件名.重命名文件,批量重命名文件rename是最好的选择. 用法:rename from to files... [root@Director test]# ls a_01 a_02 [ro ...
- PDF.NET数据开发框架实体类操作实例
PDF.NET数据开发框架实体类操作实例(MySQL)的姊妹篇,两者使用了同一个测试程序,不同的只是使用的类库和数据库不同,下面说说具体的使用过程. 1,首先在App.config文件中配置数据库连接 ...
- poj_1464 动态规划
题目大意 N个节点构成一棵树形结构,在其中若干个节点上放置士兵,与被放置士兵的节点相连的边会被士兵看守.问需要至少在多少个节点上放置士兵,才能使得N-1条边都被看守. 题目分析 题目描述的结构为树形, ...
- 1358 棋盘游戏[状压dp]
1358 棋盘游戏 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题解 查看运行结果 题目描述 Description 这个游戏在一个有10*10 ...
- MySQL中关于SQL注入的相关需要的基础知识
零.绪论: 文章部分整理来源于公司同事,特此鸣谢!!! 一.关于注入点在KEY上的注入: 我们来看一个查询,你的第一个字段是过滤器(filter)第二个字段是查询的关键字,例如查询ip == 1.2. ...
- centos6安装系统时选包
date: 2018-06-05 11:44:06 1,系统:minimal 2,包组: Base System : Base.Compatibility libraries.Deb ...
- Thymeleaf模板如何获取springMVC返回的model值
Thymeleaf模板如何获取springMVC返回的model值 后台的实现: @RequestMapping("/hello") public String hello(Mod ...
- System.getProperty()方法大全 (转载)
System.out.println("java版本号:" + System.getProperty("java.version")); // java版本号S ...