C语言——一些字符串函数的模拟实现

本文目录

  • 模拟实现 strlen
  • 模拟实现strcpy
  • 模拟实现strcat
  • 模拟实现strcmp
  • 模拟实现strstr
  • 模拟实现strncpy
  • 模拟实现strncat
  • 模拟实现strncmp

本篇文章为一些字符串函数的模拟实现,对于字符串函数的深入了解可以浏览C语言——字符函数和字符串函数_学习笔记

模拟实现 strlen

size_t my_strlen(const char* ptr)
{
	assert(ptr);
	char* start = ptr;
	while (*ptr != '\0')
	{
		ptr++;
	}
	return (size_t)(ptr - start);
}

模拟实现strcpy

char* my_strcpy(char* dest, const char* src)
{
	assert(dest && src);
	char* ptr = dest;
	while (*dest++ = *src++)
	{
		;
	}
	return ptr;
}

模拟实现strcat

char* my_strcat(char* dest, const char* src)
{
	assert(dest && src);
	char* ptr = dest;
	while (*dest != '\0')
	{
		dest++;
	}
	while (*dest++ = *src++)
	{
		;
	}

	return ptr;
}

模拟实现strcmp

int my_strcmp(const char* str1, const char* str2)
{
	assert(str1 && str2);
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
		{
			return 0;
		}
		str1++;
		str2++;
	}
	return *str1 - *str2;
}

模拟实现strstr

const char* my_strstr(const char* s1, const char* s2)
{
    assert(s1 && s2);
    char* cp = s1;
    char* p1 = NULL;
    char* p2 = NULL;
    if (*s2 == '\0')
    {
        return s1;
    }
    while (*cp)
    {
        p1 = cp;
        char* p2 = s2;

        while (*p1 == *p2 && *p1 && *p2)
        {
            p1++;
            p2++;
            
        }
        if (*p2 == '\0')
        {
            return cp;
        }
        cp++;

    }
    return NULL;
    
}

模拟实现strncpy

char* my_strncpy(char* s1, const char* s2, size_t num)
{
	assert(s2);
	char* ret = s1;
	while (*s2 && num)
	{
		*s1 = *s2;
		num--;
		s1++;
		s2++;
	}
	return ret;
}

模拟实现strncat

char* my_strncat( char* s1, const char* s2,size_t num)
{
	assert(s2);
	char* ret = s1;
	while (*s1)
	{
		s1++;
	}
	while (*s2 && num)
	{
		*s1 = *s2;
		s1++;
		s2++;
		num--;
	}
	return ret;
}

模拟实现strncmp

int my_strncmp(const char *s1, const char *s2, size_t n) 
{
    while(n--) 
    {
        if(*s1 != *s2)
            return *s1 - *s2;
        else if(*s1 == '\0')
            return 0;
        s1++;
        s2++;
    }
    return 0;
}

你可能感兴趣的:(C语言学习笔记,C语言,c语言,开发语言)