复习的时候发现重要的模拟函数的实现还是有点生疏,今天我就来概括的复习一波~我们一个一个的来实现一遍
1.模拟实现strlen其实非常简单哦~
strlen函数原型:size_t strlen ( const char * str );
功能:计算字符串长度,不包括’\0’;
模拟实现strlen函数
int my_strlen(const char* arr)
{
int count = 0;
while (*arr)
{
count++;
*arr++;
}
return count;
}
int main()
{
char arr[] = "hello";
int ret = my_strlen(arr);
printf("%d\n", ret);
system("pause");
return 0;
}
2.模拟实现strcpy函数
函数原型char * strcpy ( char * destination, const char * source );
destination目标字符串 source源字符串
功能:将源字符串拷贝到目标字符串上
#include<string.h>
#include<assert.h>
char* my_strcpy(char* dest, const char* src)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while (*src)
{
*(dest++) = *(src++);
}
//while(*(dest++)=*(src++))
//{
;
//}
return ret;
}
int main()
{
char arr[50]= { 0 };
char srr1[] = "my love";
my_strcpy(arr, srr1);
printf("%s\n", arr);
getchar();
return 0;
}
3.模拟实现strncpy函数
函数原型
char * strncpy ( char * destination, const char * source, size_t num );
功能:将源字符串的前n个字符串拷贝到目标字符串上
char* my_strncpy(const char* dest, const char* src,int n)
{
char* ret = dest;
while (n--)
{
*(dest++) = *(src++);
}
return ret;
}
int main()
{
char arr1[20] = "hello world";
char arr2[10] = "ming";
my_strncpy(arr1, arr2, 4);
printf("%s\n", arr1);
system("pause");
return 0;
}
4.模拟实现strcat函数
函数原型:char * strcat ( char * destination, const char * source );
功能:将源字符串追加到目标字符串后面
char* my_strcat(char* arr1, char* arr2)
{
char* ret = *arr1;
while (*arr1)
{
*arr1++;
}
while (*arr2)
{
*arr1++ = *arr2++;
}
return ret;
}
int main()
{
char arr1[50] = "hello ";
char arr2[] = "world";
my_strcat(arr1, arr2);
printf("%s\n", arr1);
system("pause");
return 0;
}
5.模拟实现strncat函数
函数原型:char * strncat ( char * destination, const char * source, size_t num );
功能:将源字符串中的前n个字符追加到目标字符串后面
char* my_strncat(char* dest,const char* src,int n)
{
char* ret = dest;
while (*dest)
{
*dest++;
}
while (n--)
{
*(dest++) = *(src++);
}
return ret;
}
int main()
{
char arr1[50] = "hello ";
char arr2[] = "world";
my_strncat(arr1, arr2, 3);
printf("%s\n", arr1);
system("pause");
return 0;
}