strpbrk和strcspn这两个函数的区别

strpbrk和strcspn这两个函数功能相似,区别在于前者返回的是一个指针,而后而返回的是一个数组下标值,或者可以前者为绝对值,而后者为偏移量,为一相对值,下面分别举两个简单的例子来显示它们的作用和区别:

// strpbrk示例:
#include 
#include 
int main() {
    char* str1 = "Hello, world";
    char* str2 = "Welcome you";
    char* strp = strpbrk(str1, str2);
    if (strp != NULL)
        printf("%s\n", strp);
    return 0;
}
以上输出结果为:ello, world,原因是先检查str1的第一个字符“H”是否在str2中,如果不再则继续检查str1的下一个字符是否在str2中,如果检查到在str2中,则返回指向str2该位置的指针,在这个例子中,也就是返回指向str1的“e”字符处的指针。

下面用同样的代码来看看strcpsn:
// strcspn示例:
#include 
#include 
int main() {
    char* str1 = "Hello, world";
    char* str2 = "Welcome you";
    int n = strcspn(str1, str2);
    printf("%s\n", str1+n);
    return 0;
}
运行后不难发现,两者的结果是一样的。

但请注意一点如果strpbrk没有遇到匹配的,则返回NULL,而strcspn则返回第一个字符的尾部,亦即第一个字符串的长度值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值