strtok()—字符串分割函数
相关函数:index, memchr, rindex, strpbrk, strsep, strspn, strstr

头文件:#include <string.h>

定义函数:char * strtok(char *s, const char *delim);

函数说明:strtok()用来将字符串分割成一个个片段. 参数s 指向欲分割的字符串, 参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符. 在第一次调用时,strtok()必需给予参数s 字符串, 往后的调用则将参数s 设置成NULL. 每次调用成功则返回下一个分割后的字符串指针.

返回值:返回下一个分割后的字符串指针, 如果已无从分割则返回NULL.

范例
#include <string.h>
main()
{
    char s[] = "ab-cd : ef;gh :i-jkl;mnop;qrs-tu: vwx-y;z";
    char *delim = "-: ";
    char *p;
    printf("%s ", strtok(s, delim));
    while((p = strtok(NULL, delim)))
        printf("%s ", p);
        printf("\n");
}
执行结果:
ab cd ef;gh i jkl;mnop;qrs tu vwx y;z //-与:字符已经被\0 字符取代
strstr()—字符串查函数
相关函数:index, memchr, rindex, strchr, strpbrk, strsep, strspn, strtok

头文件:#include <string.h>

定义函数:char *strstr(const char *haystack, const char * needle);

函数说明:strstr()会从字符串haystack 中搜寻字符串needle, 并将第一次出现的地址返回.

返回值:返回指定字符串第一次出现的地址, 否则返回0.

范例
#include <string.h>
main()
{
    char * s = "012345678901234567890123456789";
    char *p;
    p = strstr(s, "901");
    printf("%s\n", p);
}

执行结果:
9.01E+21
strspn()—字符查函数
相关函数:strcspn, strchr, strpbrk, strsep, strstr

头文件:#include <string.h>

定义函数:size_t strspn(const char *s, const char * accept);


函数说明:strspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全是accept 所指字符串中的字符.简单的说, 若strspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都是属于字符串accept 内的字符.

返回值:返回字符串s 开头连续包含字符串accept 内的字符数目.

范例
#include <string.h>
main()
{
    char *str = "Linux was first developed for 386/486-based PCs. ";
    char *t1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    printf("%d\n", strspn(str, t1));
}
执行结果:
5 //计算大小写字母. 不包含" ", 所以返回Linux 的长度.
strrchr()—定位字符串中最后出现的指定字符
相关函数:index, memchr, rindex, strpbrk, strsep, strspn, strstr, strtok

头文件:#include <string.h>

定义函数:char * strrchr(const char *s, int c);

函数说明:strrchr()用来出参数s 字符串中最后一个出现的参数c 地址, 然后将该字符出现的地址返回.

返回值:如果到指定的字符则返回该字符所在地址, 否则返回0.

范例
#include <string.h>
main()
{
    char *s = "0123456789012345678901234567890";
    char *p;
    p = strrchr(s, '5');
    printf("%s\n", p);
}

执行结果:
567890
strpbrk()—定位字符串中第一个出现的指定字符
相关函数:index, memchr, rindex, strpbrk, strsep, strspn, strstr, strtok


头文件:#include <include.h>

定义函数:char *strpbrk(const char *s, const char *accept);

函数说明:strpbrk()用来出参数s 字符串中最先出现存在参数accept 字符串中的任意字符.

返回值:如果到指定的字符则返回该字符所在地址, 否则返回0.

范例
#include <string.h>
main()
{
    char *s = "0123456789012345678901234567890";
    char *p; p = strpbrk(s, "a1 839"); //1 会最先在s 字符串中到
    printf("%s\n", p);
    p = strprk(s, "4398"); //3 会最先在s 字符串中到
    printf("%s\n", p);
}

执行结果:
1.23E+29
strncat()—字符串连接函数
相关函数:bcopy, memccpy, memecpy, strcpy, strncpy

头文件:#inclue <string.h>

定义函数:char * strncat(char *dest, const char *src, size_t n);


函数说明:strncat()会将参数src 字符串拷贝n 个字符到参数dest 所指的字符串尾. 第一个参数dest 要有足够的空间来容纳要拷贝的字符串.

返回值:返回参数dest 的字符串起始地址.

范例
#include <string.h>
main()
{
    char a[30] = "string(1)";
    char b[] = "string(2)";
    printf("before strncat() :%s\n", a);
    printf("after strncat() :%s\n", strncat(a, b, 6));
}


执行结果:
before strncat() : string(1)
after strncat() : string(1) string
strncpy()—复制字符串
相关函数:bcopy, memccpy, memcpy, memmove

头文件:#include <string.h>

定义函数:char * strncpy(char *dest, const char *src, size_t n);

函数说明:strncpy()会将参数src 字符串拷贝前n 个字符至参数dest 所指的地址.

返回值:返回参数dest 的字符串起始地址.


范例
#inclue <string.h>
main()
{
    char a[30] = "string(1)";
    char b[] = "string(2)";
    printf("before strncpy() : %s\n", a);
    printf("after strncpy() : %s\n", strncpy(a, b, 6));
}
执行结果:
before strncpy() : string(1)
after strncpy() : string(1)
strncasecmp()—字符串比较函数(忽略大小写)
相关函数:bcmp, memcmp, strcmp, strcoll, strncmp

头文件:#include <string.h>

定义函数:int strncasecmp(const char *s1, const char *s2, size_t n);

函数说明:strncasecmp()用来比较参数s1 和s2 字符串前n 个字符, 比较时会自动忽略大小写的差异.

返回值:若参数s1 和s2 字符串相同则返回0. s1 若大于s2 则返回大于0 的值, s1 若小于s2 则返回小于0 的值.

范例
#include <string.h>
main()
{
    char *a = "aBcDeF";
    char *b = "AbCdEf";
    if(!strncasecmp(a, b))
    printf("%s =%s\n", a, b);
}

执行结果:
aBcDef=AbCdEf
strlen()—字符串长度计算函数
相关函数:无

头文件:#include <string.h>

定义函数:size_t strlen (const char *s);

函数说明:strlen()用来计算指定的字符串s 的长度, 不包括结束字符"\0".

返回值:返回字符串s 的字符数.

范例:
/*取得字符串str 的长度 */
#include <string.h>
main()
{
    char *str = "12345678";
    printf("str length = %d\n", strlen(str));
}

执行结果:
str length = 8
strdup()—复制字符串
相关函数:calloc, malloc, realloc, free

头文件:#include <string.h>

定义函数:char * strdup(const char *s);

函数说明:strdup()会先用maolloc()配置与参数s 字符串相同的空间大小, 然后将参数s 字符串的内容复制到该内存地址, 然后把该地址返回. 该地址最后可以利用free()来释放.

返回值:返回一字符串指针, 该指针指向复制后的新字符串地址. 若返回NULL 表示内存不足.


范例
#include <string.h>
main()
{
    char a[] = "strdup";
    char *b;
    b = strdup(a);
    printf("b[]=\"%s\"\n", b);
}

执行结果:
b[]="strdup"
strcspn()—查字符串
相关函数:strspn

头文件:#inclued<string.h>

定义函数:size_t strcspn(const char *s, const char * reject);

函数说明:strcspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全不在参数reject 所指的字符串中. 简单地说, 若strcspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都不含字符串reject 内的字符.

返回值:返回字符串s 开头连续不含字符串reject 内的字符数目.

范例
#include <string.h>
main()
{
    char *str = "Linux was first developed for 386/486-based pcs. ";
    printf("%d\n", strcspn(str, " "));
    printf("%d\n", strcspn(str, "/-"));
    printf("%d\n", strcspn(str, "1234567890"));
}

执行结果:
5 //只计算到" "的出现, 所以返回"Linux"的长度
33 //计算到出现"/"或"-", 所以返回到"6"的长度
30 // 计算到出现数字字符为止, 所以返回"3"出现前的长度
字符串比较函数实现

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。