文章目录
一、strlen函数
1.使用说明
字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前⾯出现的字符个数(不包含 ‘\0’ )。
参数指向的字符串必须要以 ‘\0’ 结束。
注意函数的返回值为size_t,是⽆符号的( 易错 )
2.使用
#include <stdio.h>
int main()
{
const char* str1 = "abcdef";
const char* str2 = "bbb";
if (strlen(str2) - strlen(str1) > 0)
{
printf("str2>str1\n");
}
else
{
printf("srt1>str2\n");
}
return 0;
}
3.模拟代码实现
size_t my_strlen(const char* str)
{
int count = 0;
assert(str);
while (*str)
{
count++;
str++;
}
return count;
}
二、strcpy函数
1.使用说明
源字符串必须以 ‘\0’ 结束。
会将源字符串中的 ‘\0’ 拷贝到⽬标空间。
⽬标空间必须⾜够⼤,以确保能存放源字符串。
⽬标空间必须可变。
2.模拟代码实现
char* my_strcpy(char* dest, const char* str)
{
char* ret = dest;
assert(dest != NULL);
assert(str != NULL);
while (*dest++ = *str++)
{
;
}
return ret;
}
int main()
{
char a[] = "xxxxxxx";
char b[] = "abcdefg";
printf("%s", my_strcpy(a, b));
return 0;
}
三、strcat函数
1.使用说明
源字符串必须以 ‘\0’ 结束。
⽬标字符串中也得有 \0 ,否则没办法知道追加从哪里开始。
⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。
⽬标空间必须可修改。
2.模拟代码实现
char* my_strcat(char* dest, const char* str)
{
char* ret = dest;
assert(dest != NULL);
assert(str != NULL);
while (*dest)
{
dest++;
}
while (*dest++ = *str++)
{
;
}
return ret;
}
int main()
{
char a[] = "world";
char b[20] = "hello ";
printf("%s", my_strcat(b, a));
return 0;
}
四、strcmp函数
1.使用说明
第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字
第⼀个字符串等于第⼆个字符串,则返回0
第⼀个字符串小于第⼆个字符串,则返回小于0的数字
2.模拟代码实现
int my_strcmp(const char* scr, const char* str)
{
assert(scr != NULL);
assert(str != NULL);
while (*scr == *str)
{
if (*scr == '\0')
return 0;
scr++;
str++;
}
if (*scr > *str)
return 1;
else
return -1;
}
int main()
{
char str1[] = "abcde";
char str2[] = "abcds";
int p=my_strcmp(str1,str2);
printf("%d\n", p);
return 0;
}