拼接函数strcat和strncat
strcat格式:char* strcat(char *s1, const char *s2);
将字符串s2追加到字符数组s1中字符串的末尾,返回s1的值。注意s1的剩余空间长度要>=s2,否则无法复制’\0’结束标识
strncat格式:char* strncat(char *s1, const char *s2, size_t n);
如果s2的长度 >= n, 则’\0’ 结束标志无法复制,s1可能无结束标志
如果s2的长度 <n, 则系统后面自动填充’\0’
如果s2需要完整复制,则n必须等于s2的字符长度+1
比较函数strcmp和strncmp
strcmp格式:int strcmp(const char *s1, const char *s2)
比较字符串s1和s2,s1 = s2返回0; s1>s2返回大于0; s1<s2返回小于0
strncmp格式:int strncmp(const char *s1, const char *s2, size_t n)
将字符串s1中至多n个字符和字符串s2比较,s1 = s2返回0; s1>s2返回大于0; s1<s2返回小于0
字符查找函数strchr
strchr格式:char * strchr(const char *str, int val);
确定字符val在字符串str中第一次出现的地方,若找到返回指向str中val的指针,否则返回NULL
反向查找函数strrchr
strrchr格式:char* strrchr(const char *str, int ch);
确定字符ch在字符串str中最后一次出现的地方,若找到返回指向str中ch的指针,否则返回NULL
查找包含子串某个字符函数strpbrk
strpbrk格式:char* strpbrk(const char *str, const char *control);
检索字符串str中第一个匹配字符串control中的某个字符,不包含空结束字符。也就是说,依次检验字符串str中的字符,当被检验字符在字符串control中也包含时,则停止检验,并返回该字符位置指针。否则返回NULL
//自己实现strpbrk函数
#include<stdio.h>
#include<string.h>
char *strpbrk_s(char *str1, char *str2)
{
int i, j, len1 = strlen(str1), len2 = strlen(str2);
for(i = 0; i < len1; i++)
{
for(j = 0; j < len2; j++)
{
if(str1[i] == str2[j])
{
return &str1[i];
}
}
}
return NULL;
}
int main()
{
char str1[] = "abcde2fghi3jk4l";
char str2[] = "34";
char *ret;
ret = strpbrk_s(str1, str2);
if(ret)
{
printf("第一个匹配的字符是: %c\n", *ret);
printf("%s\n", ret);
printf("%p\n", str1);
printf("%p\n", ret);
}
else
{
printf("未找到字符");
}
return 0;
}
查找包含子串函数strstr
strstr格式:char* strstr(const char * str, const char *substr);
确定字符串substr在字符串str中首次出现的位置,若找到了,返回指向str中substr位置的指针
函数strcspn与strspn
strcspn格式:int strcspn(char * str, char * control);
检索字符串str开头有几个字符都不含字符串control中的字符
strspn格式:int strspn(char * str, char * control);
检索字符串str中第一个不在字符串control中出现的字符下标