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 ...
随机推荐
- ASP.NET MVC4 权限验证
在ASP.NET MVC4 中继承ActionFilterAttribute 类,重写OnActionExecuting方法 /// <summary> /// 权限拦截 /// < ...
- EasyUI 表单 tree
第一步:创建HTML标记 <divid="dlg"style="padding:20px;"> <h2>Account Info ...
- ti8168平台的tiler memory
DM8168 DMM/TILER简介 1.概述 如图4-1,DMM定位在SDRAM控制器的前端,是所有initiator产生的内存存取的接口. 动态内存管理器DMM,是一个专门的管理模块,广义上说,包 ...
- MySQL--执行mysql脚本及其脚本编写
http://www.cnblogs.com/kex1n/archive/2010/03/26/2286504.html
- LeetCode 125 Valid Palindrome(有效回文)(*)
翻译 给定一个字符串.确定它是否是回文的,仅仅考虑当中的数字和字符并忽略其它. 比如. "A man, a plan, a canal: Panama" 是回文的. "r ...
- web版pdf在线阅读器
近期论坛里有人提到了,在线pdf阅读器怎么做.我百度了一下,发现非常多人都非常懒.程序猿都非常懒吗? 答案是否定的. 为什么都不愿意去搜索一下呢.网上非常多答案的.我这里就列举一例.大家共勉. 看代码 ...
- docker registry的https错误解决
从docker1.3.2版本开始默认docker registry使用的是https,当你用docker pull 非https的docker regsitry的时候会报下面错误: Error: In ...
- LAMP集群项目二 初始化系统
1.关闭防火墙 /etc/init.d/iptables stop chkconfig iptables off 2.关闭selinux cat /etc/selinux/config #查看状态 s ...
- CSS 垂直外边距合并:规范、延伸、原理、解决办法
<CSS 权威指南>第七章基本视觉格式化.p192,提到了 垂直外边距合并 的情况,解释总体算清晰,但是感觉不全且没有归纳成一条一条的,参考 CSS框模型中外边距(margin)折叠图文详 ...
- Sonnet-十四行诗
<Wish> Of our best wishes we could desire increase, That thereby rose's aroma might never die, ...