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;
    }
    
    
  • 相关阅读:
    赋值运算符重载
    拷贝构造函数
    sizeof与strlen
    C++函数参数为引用或指针
    Largest Rectangle in Histogram
    二极管作用
    yzoj P1948 取数字问题
    NOIP 2016 愤怒的小鸟 题解
    NOIP 2016 蚯蚓 题解
    NOIP 2016 组合数问题 题解
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7831773.html
Copyright © 2011-2022 走看看