C 标准库 - string.h之strpbrk使用

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\n", *ret);//3
    } else {
        printf("No");
    }

    ret = strpbrk(str1, str3);
    if (ret) {
        printf("Number one is : %c\n", *ret);//e
    } else {
        printf("No");
    }
    printf("\n");
    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\n", *ret);
            all[i] = *ret;
        } else {
            printf("No");
        }
    }
    printf("\n");
    for (i = 0; i < 20; ++i) {
        if (all[i] == 0)
            break;
        printf("%c ", all[i]); //e f h i
    }
    printf("\n");
    //单词统计
    const char *str = "hello world, friend of mine!";
    const char *sep = " ,!";

    unsigned int cnt = 0;
    do {
        str = strpbrk(str, sep); // 寻找分隔符
//        printf("%s\n",str);
        if (str){
            str += strspn(str, sep); // 跳过分隔符
            printf("%s\n",str);
        }
        ++cnt; // 增加词计数
    } while (str && *str);

    printf("There are %d words\n", cnt); // 5

    return 0;
}

文章参考

原文地址:https://www.cnblogs.com/zhangrxiang/p/8422605.html

时间: 2024-12-12 17:42:15

C 标准库 - string.h之strpbrk使用的相关文章

C 标准库 - &lt;string.h&gt;

C 标准库 - <string.h> 简介 string .h 头文件定义了一个变量类型.一个宏和各种操作字符数组的函数. 库变量 下面是头文件 string.h 中定义的变量类型: 序号 变量 & 描述 1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果. 库宏 下面是头文件 string.h 中定义的宏: 序号 宏 & 描述 1 NULL这个宏是一个空指针常量的值. 库函数 下面是头文件 string.h 中定义的函数: 序号 函数 & 描述 1

C 标准库 - string.h之strncpy使用

strncpy 把 src 所指向的字符串复制到 dest,最多复制 n 个字符.当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充. char *strncpy(char *destination, const char *source, size_t num) Parameters destination Pointer to the destination array where the content is to be copied. 指向用于存储复制内容的目标数组. s

C 标准库 - string.h之strcat使用

strcat Appends a copy of the source string to the destination string. The terminating null character in destination is overwritten by the first character of source, and a null-character is included at the end of the new string formed by the concatena

C 标准库 - string.h之strspn使用

strspn Returns the length of the initial portion of str1 which consists only of characters that are part of str2. The search does not include the terminating null-characters of either strings, but ends there. 检索字符串 dest 中第一个不在字符串 src 中出现的字符下标.返回 dest

C 标准库 - string.h之strlen使用

strlen Returns the length of the C string str. The length of a C string is determined by the terminating null-character: A C string is as long as the number of characters between the beginning of the string and the terminating null character (without

C 标准库 - string.h之memchr使用

memchr Locate character in block of memory,Searches within the first num bytes of the block of memory pointed by ptr for the first occurrence of ch (interpreted as an unsigned char), and returns a pointer to it. 在参数 ptr 所指向的字符串的前 count 个字节中搜索第一次出现字符

一、Python的标准库String

一.Python的标准库String 1.查看武器 a. help(type()) name = "jane"print(help(type(name))) b. capitalize() name = "jane" print(name.capitalize()) 效果:Jane c. center() name = "jane" print(name.center(50, '-')) 效果:-----------------------jan

【C++ Primer每日刷】之三 标准库 string 类型

标准库 string 类型 string 类型支持长度可变的字符串,C++ 标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作.标准库string 类型的目的就是满足对字符串的一般应用. 与其他的标准库类型一样,用户程序要使用 string 类型对象,必须包含相关头文件.如果提供了合适的 using 声明,那么编写出来的程序将会变得简短些: #include <string> using std::string; 1.1 string 对象的定义和初始化 string 标准库支持几个

标准库string类型用法(一)

标准库string类型 1. string对象的定义与初始化 string s1;                             默认构造函数,s1为空串 string s2(s1);                      将s2初始化为s1的一个副本 string s3("nwpu");            将s3初始化为一个字符串字面值副本 string s4(n, 'b');                 将s4初始化为字符‘b’的n个副本 2. string对