概述
1、字符串分割函数
头文件:#include <string.h>
定义函数:char * strtok(char *s, const char *delim);
函数说明:strtok()用来将字符串分割成一个个片段. 参数s 指向欲分割的字符串, 参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为 字符. 在第一次调用时,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 //-与:字符已经被 字符取代
2、字符串查找函数
头文件:#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("%sn", p);
}
执行结果:
9.01E+21
3、字符查找函数
头文件:#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("%dn", strspn(str, t1));
}
执行结果:
5 //计算大小写字母. 不包含" ", 所以返回Linux 的长度.
4、定位字符串中最后出现的指定字符
头文件:#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("%sn", p);
}
执行结果:
567890
5、定位字符串中第一个出现的指定字符
头文件:#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("%sn", p);
p = strprk(s, "4398"); //3 会最先在s 字符串中找到
printf("%sn", p);
}
执行结果:
1.23E+29
6、复制字符串
头文件:#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() : %sn", a);
printf("after strncpy() : %sn", strncpy(a, b, 6));
}
执行结果:
before strncpy() : string(1)
after strncpy() : string(1)
7、字符串连接
头文件:#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() :%sn", a);
printf("after strncat() :%sn", strncat(a, b, 6));
}
执行结果:
before strncat() : string(1)
after strncat() : string(1) string
8、字符串比较(忽略大小写)
头文件:#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 =%sn", a, b);
}
执行结果:
aBcDef=AbCdEf
9、字符串长度计算
头文件:#include <string.h>
定义函数:size_t strlen (const char *s);
函数说明:strlen()用来计算指定的字符串s 的长度, 不包括结束字符"