zoukankan      html  css  js  c++  java
  • C 标准库

    strpbrk

    • Locate characters in string,Returns a pointer to the first occurrence in str1 of any of the characters that are part of str2, or a null pointer if there are no matches.
    • The search does not include the terminating null-characters of either strings, but ends there.
    • 在 dest 所指向的空终止字节串中,扫描来自 breakset 所指向的空终止字节串的任何字符,并返回指向该字符的指针。
    • 检索字符串 dest 中第一个匹配字符串 breakset 中字符的字符,不包含空结束字符。也就是说,依次检验字符串 dest 中的字符,当被检验字符在字符串 breakset 中也包含时,则停止检验,并返回该字符位置。
    • 若 dest 或 breakset 不是指向空终止字节字符串的指针则行为未定义。
    char* strpbrk( const char* dest, const char* breakset );
    

    Parameters

    dest

    • C string to be scanned.
    • 指向要分析的空终止字节字符串的指针

    breakset

    • C string containing the characters to match.
    • 指向含要搜索的字符的空终止字节字符串的指针

    Return Value

    • A pointer to the first occurrence in str1 of any of the characters that are part of str2, or a null pointer if none of the characters of str2 is found in str1 before the terminating null-character.If none of the characters of str2 is present in str1, a null pointer is returned.
    • 指向 dest 中首个亦在 breakset 中的字符的指针,或若这种字符不存在则为空指针。
    • 该函数返回 dest 中第一个匹配字符串 breakset 中字符的字符数,如果未找到字符则返回 NULL。

    名称代表“字符串指针打断 (string pointer break) ”,因为它返回指向首个分隔符(“打断”)的指针。

    Example

    //
    // Created by zhangrongxiang on 2018/2/6 11:18
    // File strpbrk
    //
    
    #include <stdio.h>
    #include <string.h>
    
    //依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。
    //检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,不包含空结束字符。
    int main() {
        int i = 0;
        const char str1[] = "abcde2fghi3jk4l";
        const char str2[] = "34";
        const char *str3 = "Life is short,I use C";
        char *ret;
    
        ret = strpbrk(str1, str2);
        if (ret) {
            printf("Number one is : %c
    ", *ret);//3
        } else {
            printf("No");
        }
    
        ret = strpbrk(str1, str3);
        if (ret) {
            printf("Number one is : %c
    ", *ret);//e
        } else {
            printf("No");
        }
        printf("
    ");
        size_t len = strlen(str1);
        char *ch = 0;
        int index = 0;
        char all[20] = {0};
    
        //获取两个字符串的字符交集
        for (; i < len; ++i) {
            ret = strpbrk((str1 + sizeof(char) * (index + 1)), str3);
            if (ret) {
                ch = strrchr(str1, *ret);
                index = (int) (ch - str1);
                printf("Number one is : %c
    ", *ret);
                all[i] = *ret;
            } else {
                printf("No");
            }
        }
        printf("
    ");
        for (i = 0; i < 20; ++i) {
            if (all[i] == 0)
                break;
            printf("%c ", all[i]); //e f h i
        }
        printf("
    ");
        //单词统计
        const char *str = "hello world, friend of mine!";
        const char *sep = " ,!";
    
        unsigned int cnt = 0;
        do {
            str = strpbrk(str, sep); // 寻找分隔符
    //        printf("%s
    ",str);
            if (str){
                str += strspn(str, sep); // 跳过分隔符
                printf("%s
    ",str);
            }
            ++cnt; // 增加词计数
        } while (str && *str);
    
        printf("There are %d words
    ", cnt); // 5
    
        return 0;
    }
    

    文章参考

  • 相关阅读:
    Python使用阿里云镜像
    Charles抓取https请求中文乱码的处理方法
    Charles 注册码
    BAT随笔记录(1)
    NodeJS使用puppeteer进行截图
    Centos中文语言乱码解决方法
    CentOS下安装Chrome浏览器中文显示为方框
    CentOS下安装Chrome浏览器
    Jenkines邮件中添加图片
    将HTML转IMAGE
  • 原文地址:https://www.cnblogs.com/zhangrxiang/p/8422605.html
Copyright © 2011-2022 走看看