字符串函数_2

      在字符串函数_1这篇博客中,曾说过strlen、strcmp、strcpy、strcat和字符串搜索函数,需要说一下,其实还有其它的字符串操作的函数,分别有strncmp、strncpy、strncat以及strcoll、strcspn、strerror、strpbrk、strspn、strstr、strtod、strtok、strtol、strtoul和strxfrm函数等等。

      其中前三个分别是strcmp、strcpy和strcat的安全函数,即限制字符串的个数,这里不多说了。

      本篇主要说一下strcoll、strcspn、strerror、strpbrk、strspn这几个函数: 


strcoll()

      它和strcmp函数可以说是完全等价的,就不再介绍了


strcspn()

size_t strcspn(const char * str1, const char * str2);

功能:函数返回str1 开头连续n个字符都不含字符串str2内字符的字符数


例1:

# include <stdio.h>
# include <string.h>

int main(void) {
    char *s1 = "hello world!";
    char *s2 = "who";
    int n;

    n = strcspn(s1, s2);
    printf("%c", s1[n]);

    return 0;
}
输出结果为:


strerror()

char * strerror(int num);

功能:函数返回一个被定义的与某错误代码相关的错误信息。


例2:

# include <stdio.h>
# include <string.h>
# include <stdlib.h>

int main(void) {
    FILE * fp;
    int err;
    char * mes;
    if(NULL == (fp = fopen("/usr/aaa", "r+"))) {
        printf("errno=%d\n", err);
        mes=strerror(err);
        printf("%s\n",mes);
    }

    exit(0);
}
输出结果为:



strpbrk()

char * strpbrk(const char * str1, const char * str2);

功能:函数返回一个指针,它指向字符串str2中任意字符在字符串str1 首次出现的位置,如果不存在返回NULL。


例3:

# include <stdio.h>
# include <string.h>

int main(void) {
    char * s1 = "Hello World!";
    char * s2 = "WTO";
    char * p;

    p = strpbrk(s1, s2);
    if(p)
        printf("%s\n", p);
    else
        printf("Not Found!\n");

    p = strpbrk(s1, "asd");
    if(p)
        printf("%s\n", p);
    else
        printf("Not Found!\n");

    p = strpbrk(s1, "sss");
    if(p)
        printf("%s", p);
    else
        printf("Not Found!\n");

    return 0;
}
输出结果为:


strspn()

size_t strspn(const char * str1, const char * str2);

功能:函数返回字符串str1中第一个不包含于字符串str2的字符的索引。


例4:

# include <string.h>
# include <stdio.h>

int main(void) {
    char * s = "This program is licensed under the termsof the GNU General Public License version 3";
    printf("%lu\n", strspn(s, "Thi"));
    printf("%lu\n", strspn(s, "s"));

    return 0;
}
输出结果为:


所有程序均在ubuntu12.04下codeblocks10.05下运行通过

如有错误,欢迎指出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值