自实现字符串C库函数

myStrlen

int myStrlen(char * str)
{
	int len = 0;
	while (*str)
	{
		str++;
		len++;
	}
	return len;
}

.

myStrcpy

char * myStrcpy(char * str, const char * dest)
{
	char *t = str;
	while (*str++ = *dest++);
	return t;
}

.

myStrcmp

int myStrcmp(const char *str, const char * dest)
{
	for (; *str == *dest && *str; str++, dest++);
	return *str == *dest ? 0 : (*str > *dest ? 1 : -1);
}

.

myStrncmp

int myStrncmp(const char * str, const char * dest, int n)
{
	for (int i = 0; *str == *dest && *str && i < n; str++, dest++, i++);
	return *str == *dest ? 0 : (*str>*dest ? 1 : -1);
}

.

myStrchr

char * myStrchr(char *str, char ch)
{
	while (*str)
	{
		if (*str == ch)
		{
			return str;
		}
		str++;
	}
	return str;
}

.

myStrstr

char * myStrstr(char * str, char * dest)
{
	while (*str)
	{
		if (*str == *dest)
		{
			for (int i = 1; *(str + i) == *(dest + i); i++)
			{
				if (*(dest + i +1 ) == '\0')
				{
					return str;
				}
			}
		}
		str++;
	}
	return str;
}

.

myStrrev

char * myStrrev(char * str)
{
	char * t = str;
	char * left = str;
	while (*str)
	{
		str++;
	}
	str--;
	char * right = str;
	while (left < right)
	{
		char ch = *left;
		*left = *right;
		*right = ch;
		left++;
		right--;
	}
	return t;
}

.

myStrcat

char * myStrcat(char * str, const char * dest)
{
	char *t = str;
	while (*str)
	{
		str++;
	}
	while (*str++ = *dest++);
	return t;
}

.

myMemcpy

char * myMemcpy(char * str, const char * dest, int n)
{
	char * p = str;
	const char * q = dest;
	if ((p<=q) || (q+n<=p))
	{
		while (n--)
		{
			*p++ = *q++;
		}
	}
	else
	{
		p = p + n - 1;
		q = q + n - 1;
		while (n--)
		{
			*p-- = *q--;
		}
	}
	return str;
}

.

myMemset

void * myMemset(void * str, int set, int len)
{
	char * t = (char*)str;
	while (len--)
	{
		*t++ = set;
	}
	return str;
}

.

myItoa

char *  myItoa(int num, char * str)
{
	int i = 0;
	char * t = str;
	bool flag = true;
	if (num < 0)
	{
		flag = false;
		num = -num;
	}
	
	while (num)
	{
		str[i++] = num % 10 + 48;
		num = num / 10;
	} 

	if (false == flag)
	{
		str[i++] = '-';
	}
	str = '\0';

	return myStrrev(t);
}

.

myAtoi

int myAtoi(char * str)
{
	while (*str == ' ')
	{
		str++;
	}
	int res = 0;
	int num = 1;
	if (*str == '-')
	{
		num = -1;
		str++;
	}
	while (*str>='0' && *str <='9')
	{
		res = res * 10 + *str - '0';
		str++;
	}

	return res*num;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值