目录
一.strlen函数
二.strcpy函数
三.strcat函数
四.strcmp函数
五.strncpy函数
六.strncat函数
七.strncmp 函数
八.strstr函数
九.strtok函数
十.strchr函数
十一.strrchr函数
十二.strpbrk函数
十三.strspn函数
十四.strcspn函数
一.strlen函数
size_t strlen( const char *string );
头文件:string.h
作用:用于计算字符串长度,但不包括 “ \0 ”。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "hello world!";
printf("%zd", strlen(a));
return 0;
}
运行结果如下所示:
注:参数所指向的字符串必须以“\0”结尾。
二.strcpy函数
char *strcpy( char *strDestination, const char *strSource );
用法:将指针 strSource 所指向的字符串复制到目标字符串中,即 strDestination 所指向的字符串 中。(包括 “ \0 ”)
返回值:复制后字符串首元素地址,即strDestination。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[13] = "abc";
char b[] = "hello world!";
strcpy(a, b);
printf("%s", a);
return 0;
}
运行结果如下:
注:目标字符串必须空间大小足够大,确保放得下源字符串。 源字符串必须以“ \0 ”结尾。 目标空间必须可修改。如不能被const修饰。
三.strcat函数
char *strcat( char *strDestination, const char *strSource );
用法:在目标字符串(strDestination)后面追加上另一个字符串(源字符串: strSource)。
返回值:返回拼接后字符串首元素的地址,即strDestination。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[13] = "hello ";
char b[] = "world!";
strcat(a, b);
printf("%s", a);
return 0;
}
运行结果如下所示:
注:目标字符串和源字符串都必须以 " \0 " 结尾。 目标字符串空间必须足够大。 目标空间必须可修改。
四.strcmp函数
int strcmp( const char *string1, const char *string2 );
作用:是C语言中的字符串比较函数,用于比较两个字符串的大小。
比较原理:按照字符串元素顺序逐个比较,若两个字符相等,则继续比较下一个字符,反之则函 数运行结束。
返回值:当string1 < string2 时,返回 -1。 当string1 = string2 时, 返回0。 当string1 > string2 时, 返回1。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "abc";
char b[] = "aec";
printf("%d", strcmp(a, b));
return 0;
}
运行结果如下所示:
注:字符串的比较是按照 ascii 码进行比较的,因此大小写字母的比较结果不同。 字符串均需以"\0"进行结尾。
五.strncpy函数
char *strncpy( char *strDest, const char *strSource, size_t count );
作用:将 strSource 所指向的源字符串中 count 个字符拷贝到 strDest 所指向的字符串中。 若 strSource 所指向的源字符串中字符数量不足 count 个,将会追加 0。
返回值:返回结果字符串首元素的地址,即strDest。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[15] = "abc";
char b[] = "hello world!";
strncpy(a, b, sizeof(b));
printf("%s", a);
return 0;
}
运行结果如下所示:
注:目标字符串和源字符串中间不能有重叠部分,目标字符串空间必须足够大。
六.strncat函数
char *strncat( char *strDest, const char *strSource, size_t count );
用法:将源字符串(strSource所指向的字符串)中 count 个字符串附加在目标字符串(strDest所 指向的字符串)末尾。
返回值:返回目标字符串首元素地址,即strDest。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[15] = "hello ";
char b[] = "world!";
strncat(a, b, sizeof(b));
printf("%s", a);
return 0;
}
运行结果如下所示:
七.strncmp 函数
int strncmp( const char *string1, const char *string2, size_t count );
用法:按顺序一次比较字符串中字符大小,直到出现大小不同的字符或比较完 count 个字符。
返回值:当string1 < string2 时,返回 -1。 当string1 = string2 时, 返回0。 当string1 > string2 时, 返回1。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "abcd";
char b[] = "aec";
printf("%d", strncmp(a, b, sizeof(b)));
return 0;
}
运行结果如下所示:
八.strstr函数
char *strstr( const char *string, const char *strCharSet );
用法:用于在 string 所指向的字符串中查找 strCharSet 所指向的字符串,并返回第一次出现时的 首元素地址。
返回值:当 string 所指向的字符串存在所查找的字符串时,返回第一次出现时的首元素地址,否 则返回NULL。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "hello world!";
printf("%s", strstr(a, "or"));
return 0;
}
运行结果如下所示:
九.strtok函数
char *strtok( char *strToken, const char *strDelimit );
作用:将 strToken 指向的目标字符串的内容按照 strDelimit 所指向的字符串内容进行分割(实际 将与strDelimit所指向字符串元素相同的转化为"\0"),记录并返回分割后的字符串首元素地 址,当第二次调用该函数并且目标字符串地址为NULL时,将默认为上一个非NULL的地 址,并返回下一个分割段。
返回值:返回原字符串单段首元素地址。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "hello world!";
char b[] = "eo";
char* c = strtok(a, b);
while (c != NULL)
{
printf("%s\n", c);
c = strtok(NULL, b);
}
return 0;
}
运行结果如下:
注:该函数会改变目标字符串的内容 目标字符串必须可修改 strtok会自动忽略字符串中第一个字符
十.strchr函数
char *strchr( const char *string, int c );
用法:查找 string 所指向的字符串是否有ASCII码值等于c的字符。
返回值:查找到字符时返回字符的地址,未查找到字符时返回 NULL。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "helalo woarld!";
char* c = strchr(a, 97);
printf("%s\n", c);
return 0;
}
运行结果如下所示:
注:strchr只能查找单个字符并且只能查找到第一个匹配项。 不支持多字节字符的查找。
十一.strrchr函数
char *strrchr( const char *string, int c );
用法:反向查找 string 所指向的字符串是否有ASCII码值等于c的字符。
返回值:查找到字符时返回字符的地址,未查找到字符时返回 NULL。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "helalo woarld!";
char* c = strrchr(a, 97);
printf("%s", c);
return 0;
}
运行结果如下所示:
注:strrchr只能查找单个字符并且只能查找到第一个匹配项。 不支持多字节字符的查找。
十二.strpbrk函数
char *strpbrk( const char *string, const char *strCharSet );
用法:在 string 所指向的字符串中查找 strCharSet 所指向字符串中任意字符,并返回第一个符合 的字符地址。
返回值:查找到字符时返回字符的地址,未查找到字符时返回 NULL。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "hello world!";
char b[] = "do";
char* c = strpbrk(a, b);
printf("%s", c);
return 0;
}
运行结果如下:
十三.strspn函数
size_t strspn( const char *string, const char *strCharSet );
用法:从头开始查找 string 所指向的字符串中属于 strCharSet 的字符,并记录,直到遇到不属于 strCharSet 中的字符。
返回值:返回开头到遇到不属于 strCharSet 所指向字符串中字符时所经过的字符个数。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "hello world!";
char b[] = "helowrd! ";
printf("%zd", strspn(a, b));
return 0;
}
运行结果如下所示:
十四.strcspn函数
size_t strcspn( const char *string, const char *strCharSet );
用法:从头开始查找 string 所指向的字符串中属于 strCharSet 的字符,并记录,直到遇到属于 strCharSet 中的字符。
返回值:返回开头到第一个相同元素之间的字符个数。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "hello world!";
char b[] = "oz";
printf("%zd", strcspn(a, b));
return 0;
}
运行记过如下: