自定字符串函数

strcpy自定义函数实现

strcat自定义函数实现

strcmp自定义函数实现

strstr自定义函数实现


strcpy自定义函数实现

char* my_strcpy(char *p1,char *p2) {
	assert(p1 && p2);
	char *ret = p1;
	while (*p1++=*p2++) {
		;
	}
	return ret;
}


int main() {
	char arr1[10] = "abc";
	//char* arr1 = "sdsdsdsd";
	char *arr2 = "1237224";
	printf("%s", my_strcpy(arr1, arr2));
	return 0;
}

 自定字符串函数_第1张图片

strcat自定义函数实现

追加函数首先得要确定目标函数中'\0'出现的位置

char* my_strcat(char* p1, const char* p2) {
	char* ret = p1;
	while (*p1 != '\0') {
		p1++;
	}
	//此时p1----> '\0'
	while (*p1 = *p2)
	{
		p1++;
		p2++;

	}
	return ret;
}

int main() {
	char arr1[30] = "abc";
	char arr2[] = "edf";
	char* ret = my_strcat(arr1, arr2);
	printf("%s", ret);
	return 0;
}

 自定字符串函数_第2张图片

 


strcmp自定义函数实现

int my_strcmp(const char* s1, const char* s2)
{
	while (*s1 == *s2)
	{
		s1++;
		s2++;
		if (*s1 == '\0')
			return 0;
	}
	if (*s1 > *s2)
		return 1;
	else
		return -1;
}


int main()
{
	int ret = my_strcmp("abcf", "abx");
	if (ret > 0)
		printf("大于\n");
	else if (ret == 0)
		printf("等于\n");
	else
		printf("小于\n");
	return 0;
}

自定字符串函数_第3张图片


strstr自定义函数实现

p指针用来移动和记录返回位置(若有),s1和s2指针用来比较该指针指向元素是否一样

char* my_strstr(const char* str1, const char* str2)
{
	assert(str1 && str2);
	const char* s1 = str1;
	const char* s2 = str2;
	const char* p = str1;
	while (*p != '\0')
	{
		s1 = p;
		s2 = str2;
		while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
		{
			return (char*)p;
		}
		p++;
	}
	return NULL;
}
int main() {
	char arr1[] = "donwang";
	char arr2[] = "ng";
	char* ret =my_strstr(arr1, arr2);
	if (ret) {
		printf("%s", ret);
	}
	else {
		printf("NULL");
	}
	return 0;
}

自定字符串函数_第4张图片

你可能感兴趣的:(java,前端,linux)