1、strlen
(1)函数原型:int strlen(char *str)
(2)函数功能:求字符串长度,即字符串str中有多少个字符
(3)返回值:字符串str的长度(不包括\0)
//------------- strlen:字符串长度 不算最后的\0 -----------
int my_strlen(char* str)
{
assert(str != NULL);
int len = 0;
while (*str++)
len++;
return len;
}
2、strcpy
(1)函数原型:char* strcpy(char *dest, char *src)
(2)函数功能:把src指向的字符串拷贝到dest中,注意:dest应该有足够大的空间容纳src
(3)返回值:返回指向字符串dest的指针
//------------- strcpy:字符串拷贝 -----------
char *my_strcpy(char* dest, char* src)
{
assert(dest != NULL && src != NULL);
char* p = dest;
while (*src != '\0')
{
*p++ = *src++;
}
*p = '\0';
return dest;
}
3、strcmp
(1)函数原型:int strcmp(char *str1, char *str2)
(2)函数功能:比较两个字符串的大小
(3)返回值:str1>str2,返回结果大于0;str1<str2,返回结果小于0;str1==str2,返回结果等于0
//------------- strcmp:字符串比较函数 -----------
int my_strcmp(char* str1, char* str2)
{
assert(str1 != NULL && str2 != NULL);
while (*str1 != '\0' && *str2 != '\0' & *str1 == *str2)
{
str1++;
str2++;
}
//5种情况
//1.str1没结尾,str2结尾
if (*str1 != '\0' && *str2 == '\0')
return 1;
//2.str1结尾,str2没结尾
else if (*str1 == '\0' && *str2 != '\0')
return -1;
//3.大于
else if (*str1 > *str2)
return 1;
//4.小于
else if (*str1 < *str2)
return -1;
//5.等于
return 0;
}
4、strcat
(1)函数原型:char* strcat(char *str1, char *str2)
(2)函数功能:字符串追加,将str2追加到str1后面,str1空间足够大
(3)返回值:str1
//------------- strcat:字符串拼接:将src拼接到dest后面 -----------
char *my_strcat(char* dest, char* src)
{
assert(dest != NULL && src != NULL);
char* p = dest;
while (*p != '\0')
{
p++;
}
while (*src != '\0')
{
*p = *src;
p++;
src++;
}
*p = '\0';
return dest;
}
5、strstr
(1)函数原型:char* strstr(char *str1, char *str2)
(2)函数功能:在str1中查找str2
(3)返回值:找到了返回第一次匹配到的字符串的指针,否则返回NULL
//------------- strstr:在字符串str1中查找另一字符串str2首次出现的位置 -----------
//找到就返回第一次匹配到的字符串指针,否则返回NULL
char *my_strstr(char* str1, char* str2)
{
char* src, * sub;
assert(str1 != NULL && str2 != NULL);
while (*str1 != '\0')
{
src = str1;
sub = str2;
do {
if (*sub == '\0')
return str1;
} while (*src++ == *sub++);
str1++;
}
return NULL;
}