1、my_strlen()

        1.1 计数器

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int my_strlen(const char * str)
{
	if(str == NULL)
	{
		printf("str NULL");
		return -1;
	}

	int count = 0; //计数器
	char *p = (char*)malloc(strlen(str) + 1);
	strcpy(p,str);
    
	while(*p != '\0')
	{
		++count;
		++p;
	}
	return count;
}


int main()
{
    int count = my_strlen("abcd");
	printf("str counnt = %d\n", count);
	return 0;

}

        1.2 递归函数

int my_strlen(const char * str)
{
	if(str == NULL)
	{
		printf("str NULL");
		return -1;
	}

	if(*str == '\0')
		return 0;
	else
		return 1 + my_strlen(str + 1);
}

        1.3 指针运算

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int my_strlen(const char * str)
{
	if(str == NULL)
	{
		printf("str NULL");
		return -1;
	}

	char *p = (char*)malloc(strlen(str) + 1);
	strcpy(p,str);
	char *p1 = p;
    
	while(*p != '\0')
	{
		++p;
	}
	return p - p1;

}


int main()
{
    int count = my_strlen("abcd");
	printf("str counnt = %d\n", count);
	return 0;

2、my_strcpy()

#include <stdio.h>
#include <assert.h>

char* my_strcpy(char * dest, const char *src)
{
	assert(dest && src);	
	char *ret = dest; //保存dest字符串的首地址,后续++的规程中,dest的指向后移
	while(*dest++ = *src++);
	return ret;
}

int main()
{
    char str1[] = "**************";
    char str2[] = "hello";
	printf("%s\n",my_strcpy(str1, str2));
	return 0;
}

3、my_strcat()

#include <stdio.h>
#include <assert.h>
#include <string.h>

char* my_strcat(char * dest, const char *src)
{
	assert(dest && src);	
	char *ret = dest; //保存dest字符串的首地址,后续++的规程中,dest的指向后移
	int len = strlen(dest);
	// while(dest[len++] = *src++);
     while(*(dest+len++) = *src++);

	return ret;
}

int main()
{
    char str1[] = "hello";
    char str2[] = "world";
	printf("%s\n",my_strcat(str1, str2));
	return 0;
}

5、my_memcpy()

#include <stdio.h>
#include <assert.h>
#include <string.h>
 
void* my_memcpy(void* dest, const void* src, size_t num)
{
	assert(dest && src);
	for (int i = 0; i < num; i++)
	{
		*((char*)dest + i) = *((char*)src+i);
	}
	return dest;
}
 
int main()
{
	char str1[10];
	char str2[] = "hello";
	my_memcpy(str1, str2, sizeof(char) * 3);
	printf("%s\n", str1);
	return 0;
}

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐