模拟实现C语言库函数strlen和strcpy
一、strlen函数
strlen函数是C语言中库函数string.h中的函数,其函数返回值为字符串的长度,其模拟实现如下
#include <stdio.h>
#include <assert.h>
int my_strlen(const char* p)//传入要求的字符串的地址
{
int count = 0;
assert(p);//断言,判断p是否为空指针或野指针,若是空指针或野指针则报警
while (*p != '\0')
{
count++;
p++;
}
return count;
}
int main()
{
char arr[] = "hello world";
int sz = my_strlen(arr);
printf("%d\n", sz);
return 0;
}
二、strcpy函数
strcpy函数同样为C语言中库函数string.h的函数,其作用为将source指针指向的字符串内容连同结束时的空字符复制到destination指向的数组空间中,其模拟实现如下:
#include <stdio.h>
#include <assert.h>
char* my_strcpy(char* des,const char* src)//需要两个参数,一个des的地址,一个src的地址
{
char* ret = des; //定义一个变量存放des的地址
assert(src != NULL);//断言
assert(des != NULL);
while (*des++ = *src++)//将src地址指向的内容放到des所指向的数组中,并不断加一,直到*src的内容为\0停止
{
;
}
return ret;//返回最开始的des所指向的地址
}
int main()
{
char arr1[20] = "hello world";
char arr2[20] = { 0 };
my_strcpy(arr2, arr1);
printf("%s\n", arr2);
return 0;
}