zoukankan      html  css  js  c++  java
  • strtok

    定义: Defined in header <string.h>

    原型: char *strtok( char *str, const char *delim );

    参数: 2个都是字符串(以结尾)

    功能描述:
    该函数的功能是根据分割符分割字符串. 该函数最特殊的地方是它具有
    类似"记忆"的功能, 请看下面的示例.

    简单示例

    #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
    ", res); // one
        printf("%s
    ", str); // one
        // 这里的原理就是把str第一个 - 替换成 
    
        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
    ", res); // one
        printf("%s
    ", str); // one
        // 这里的原理就是把str第一个 - 替换成 
    
        res = strtok(NULL, delim); // 这里固定用NULL, 代表接着上次继续分割
        printf("%s
    ", res); // two
        printf("%s
    ", 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
    ");
        } else {
            puts(res);
        }
    
        // 第3次找, 返回NULL
        res = strtok(NULL, delim);
        if (res == NULL) {
            printf("NULL
    ");
        } 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
    ", res);
            res = strtok(NULL, delim);
        }
        // 人工打印str
        for (i = 0; i < sizeof str; i++) {
            if(str[i] == '' && str[i + 1] != '') {
                printf("\0");
            } else {
                printf("%c", str[i]);
            }
        }
    /*
    输出:
    one
    two
    tree
    four
    five
    onetwotreefourfive
    */
        return 0;
    }
    
    
  • 相关阅读:
    eclipse中如何复制用点分隔的全类名
    win7 64下暗黑世界V1.1 服务器端及客户端的安装及运行 成功
    Firefly Http通信简单介绍
    win7 不能启动 memcached 总是反回failde to start service
    win7 安装 memcached
    memcached完全剖析–1. memcached的基础
    【Firefly API 新版文档】Package dbentrust
    《暗黑世界GM管理后台系统》部署+功能说明
    [官方教程] 暗黑世界 客户端 配置文档
    MAC下《暗黑世界》客户端版本编译说明!!
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7831773.html
Copyright © 2011-2022 走看看