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;
    }
    
    
  • 相关阅读:
    Ionic2 自学须知的基本知识点
    Ionic2 启动加载优化总结
    Ionic2使用TypeScript调用自定义JavaScript脚本
    GPS坐标转百度地图坐标
    友情链接
    Python学习之路目录(收藏整理)
    基于Docker构建Jenkins CI平台
    KeepLived + nginx 高可用
    k8s-1.16 二进制安装
    Ansible自动化部署K8S集群
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7831773.html
Copyright © 2011-2022 走看看