免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2815 | 回复: 0
打印 上一主题 下一主题

strpbrk和strcspn用法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-10 09:54 |只看该作者 |倒序浏览
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则返回第一个字符的尾部,亦即第一个字符串的长度值。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/45170/showart_492682.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP