目录
- strlen
vs2019系统中的strlen
模拟实现:strlen
size_t ma_strelen(const char* stc)//size_t 是一个无符号整数的C/C++类型
{
assert(stc);
const char* start = stc;
const char* end = stc;
while (*end != '\0')
{
end++;
}
return end - start;
}
int main()
{
char st[] = "chenqiaowei";
int len = ma_strelen(st);
printf("%d\n", len);
return 0;
}
- strcpy
如果char* on_1 = one_2;这段代码改为char* on_1 = one就有点像前置覆盖字符一样。
>> “chenqiaoweixx”
模拟实现:strcpy
char* my_strcpy(char* one, const char* one_2)//const修饰st1
{
assert(one);
assert(one_2);
char* on_1 = one_2;
//while (*one_2 != '\0')
//{
// *one = *one_2;
// one++;
// one_2++;
//}
while (*one++ = *one_2++)
{
;
}
return on_1;
}
int main()
{
char st[100] = "xxxxxxxxxxxx";
char st1[] = "chenqiaowei";//可以理解为\0也拷贝过去了
printf("%s\n", my_strcpy(st, st1));
return 0;
}
- strcat
vs2019系统中的strcat
模拟实现:strcat
char* my_strcat(char* one, const char* tow)
{
char* on = one;
while (*on)
{
on++;
}
while (*on++ = *tow++)
{
;
}
return one;
}
int main()
{
char st[100] = "chen";//数组要有明确的大小空间
char st1[] = "qiaowei";
printf("%s\n", my_strcat(st, st1));
return 0;
}
- strcmp
vs2019系统中的strcmp
模拟实现:strcmp
int my_strcmp(const char* one, const char* tow)
{
assert(one);
assert(tow);
while (*one == *tow)
{
if (*one == '\0')
{
return 0;
}
one++;
tow++;
}
if (*one > *tow)
{
return 1;
}
else
return - 1;
}
int main()
{
char st[] = "chen";
char st2[] = "chen";
char st3[] = "qiaowei";
printf("%d\n", my_strcmp(st, st2));
printf("%d\n", my_strcmp(st, st3));
return 0;
}