1:strlen函数
2:strcpy函数
3:strcat函数
4:strcmp函数
5:strstr函数
6:strerror函数
7:memcpy函数
8:memmove函数
9: memcmp函数
首先,我们先解释下每个函数的用法,然后怎么模拟实现每个函数
strlen函数,试求字符串长度的一个函数,以\0为结速标志的函数,遇到\0就停止的函数,所以我们怎么去写这个函数,其实很简单,只要只要给一个字符串的起始地址,然后地址递加,知道遇到\0结束,然后就可以输出字符串大小,程序如下:
int my_strlen(char* p1)
{
int count=0;
while (*p1++)
{
count++;
}
return count;
}
int main()
{
int sz = 0;
char ch[] = "abcdefgh";
sz=my_strlen(ch);
printf("%d\n", sz);
return 0;
}
2:strcpy函数,从英文的字面意思就是字符串拷贝,其实好像也就是这个意思,
首先我们看看这个函数怎么用:
从源代码形参和返回类型我们可以看出,都是char *类型,所以我们在模拟实现这个函数的时候,也应该去参考这种类型,这个函数的作用就是,把源地址的字符串,拷贝到目的地字符串当中,同样的我们改如何实现这个函数呢?你想想,好了,程序如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
char * my_strcpy(char* dest, char* src)
{
char*ret = dest;
assert(dest&&src);
while (*src)
{
*dest = *src;
src++;
dest++;
}
return ret;
}
int main()
{
char ch1[8] = "abcdefg";
char ch2[4] = "def";
my_strcpy(ch1, ch2);
printf("%s", ch1);
return 0;
}
3:strcat函数,此函数是给目的地函数往后追加字符串的,但有几点必须要注意到,第一,源字符串必须以‘\0'结束,第二,目标空间必须足够大,能容纳下源字符串的内容。第三,目标空间必须可修改。同样的,我们看下此函数在源代码中怎么使用,
所以参考以上内容,程序如下:
char* void my_strcat(char *p1, char* p2)
{
char *tet=p1;
int sz1 = 0;
int sz2 = 0;
sz1 = strlen(p1);
sz2 = strlen(p2);
char* p3 = p1 + sz1 ;
while (*p2++)
{
*p3 = *p2;
p3++;
}
return ret;
}
int main()
{
char ch1[10] = "abcdef";
char ch2[4] = "ghi";
my_strcat(ch1, ch2);
printf("%s", ch1);
return 0;
}
4:strcmp函数,此函数的作用是比较字符串是不是相等的,但它的返回值是int,它的规则是,第一个字符串大于第二个字符串,则返回大于零的数字,如果第一个字符串等于第二个字符串,则返回零,如果第一个字符串小于第二个字符串,则返回小于零的数字,所以,如何模拟实现呢?
好了程序如下:
int my_strcmp(char *p1, char *p2)
{
assert(p1&&p2);
while (*p1&&*p2)
{
if (*p1 == *p2)
{
p1++;
p2++;
}
else if (*p1 > *p2)
{
return 1;
}
else
return - 1;
}
return 0;
}
int main()
{
int ret = 0;
char ch1[] = "abcdef";
char ch2[] = "abcdef";
ret = my_strcmp(ch1, ch2);
printf("%d\n", ret);
return 0;
}
先介绍这么多,剩下的下次在介绍