c语言模拟实现strlen,strcat,strcmp,strcpy,strstr函数。
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char arr[])//strlen函数模拟实现
{
assert(arr);
size_t count = 0;
while (*arr++)
{
count++;
}
return count;
}
char* my_strcpy(char arr1[],char const arr2[])//strcpy函数模拟实现
{
char* arr3 = arr1;
assert(arr2);
assert(arr1);
while (*arr1++ = *arr2++)
{
;
}
return arr3;
}
int my_strcmp(const char arr1[],const char arr2[])//strcmp函数模拟实现
{
assert(arr2);
assert(arr1);
while (*arr1==*arr2)
{
if (*arr1 =='\0')
{
return 0;
}
arr1++;
arr2++;
}
return *arr1 - *arr2;
}
char* my_strcat(char arr1[],const char arr2[])//strcat函数模拟实现
{
assert(arr2);
assert(arr1);
char* arr3 = arr1;
while (*arr1)
{
arr1++;
}
while ((*arr1++ = *arr2++))
{
;
}
return arr3;
}
char* my_strstr(const char arr1[], const char arr2[])//strstr函数模拟实现
{
char* cmp = (char*)arr1;
while (*cmp)
{
char* s2 = (char*)arr2;
char* s1 = cmp;
while (*s1&&*s2&& (*s1 == *s2))
{
s1++;
s2++;
}
if (*s2=='\0')
return cmp;
cmp++;
}
return (NULL);
}
int main()
{
char arr1[20] = { "hello" };
char arr2[] = { "world" };
char arr3[] = { "hellb" };
char arr4[] = { "lo" };
char* n = { 0 };
//printf("%s数组的长度为%zd\n", arr1,my_strlen(arr1));//my_strlen的调用
//printf("拷贝后的arr1数组变为%s\n", my_strcpy(arr1,arr2));//my_strcmp的调用
//if (my_strcmp(arr1,arr3) > 0)//my_strcmp的调用
//{
// printf("%s大于%s\n", arr1, arr3);
//}
//else if (my_strcmp(arr1, arr3) < 0)
//{
// printf("%s小于%s\n", arr1, arr3);
//}
//else printf("%s等于%s\n", arr1, arr3);
//printf("追加后的字符串为%s\n", my_strcat(arr1, arr2));//my_strcat的调用
//if (n=my_strstr(arr1, arr4))//my_strstr的调用
//{
// printf("找到了,后面的字符依次是%s\n", n);
//}
//else
//{
// printf("没有找到\n");
//}
return 0;
}
注:代码中关于主函数中函数调用的部分已注释掉,如需使用请取消注释