库函数str函数的模拟实现

c语言模拟实现strlen,strcat,strcmp,strcpy,strstr函数。

代码如下:

#define  _CRT_SECURE_NO_WARNINGS
#include
#include
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;
}

注:代码中关于主函数中函数调用的部分已注释掉,如需使用请取消注释

你可能感兴趣的:(算法,c语言)