strtok - 详细示例解析
2017-11-14 11:46
106 查看
定义: 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; }
相关文章推荐
- Java【集合系列】-11- Hashtable详细介绍(源码解析)和使用示例
- Java 集合系列之 Vector详细介绍(源码解析)和使用示例
- Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
- Java 集合系列07之 Stack详细介绍(源码解析)和使用示例
- Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例
- Java 集合系列13之 WeakHashMap详细介绍(源码解析)和使用示例
- Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例
- Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
- Java 集合系列之 LinkedList详细介绍(源码解析)和使用示例
- Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
- LinkedList: 详细介绍(源码解析)和使用示例 [From skywang12345]
- springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置
- Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例
- Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
- Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例
- Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
- HashMap详细介绍(源码解析)和使用示例
- Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例
- Java 集合系列07之 Stack详细介绍(源码解析)和使用示例
- Java 集合系列13之 WeakHashMap详细介绍(源码解析)和使用示例