字符串拷贝/字符串比较/字符串连接/字符串长度/字符子串/内存块复制/内存块赋值初始化库函数实现

字符串拷贝、字符串比较、字符串连接、字符串长度、字符子串、内存块复制、内存块赋值初始化

//字符串拷贝
char* strcpy(char* strDest,const char* strSrc)
{
	assert(strDest!=NULL && strSrc!=NULL);
	if(strDest==strSrc)
		return strDest;
	char *address=strDest;
	while((*strDest++=*strSrc++)!='\0')
		
	return address;
}


char* strncpy(char* strDest,const char* strSrc,unsigned int count)
{
	assert(strDest!=NULL && strSrc!=NULL);
	if(strDest==strSrc)
		return strDest;
	char *address=strDest;
	while(count-- && *strSrc!='\0')
		*strDest++=*strSrc++;
	*strDest='\0';
		
	return address;
}

//字符串比较
int strcmp(const char *s,const char *t)
{
	assert(s!=NULL && *t!-NULL);
	while(*s && *t && *s==*t)
	{
		++s;
		++t;
	}
	return(*s-*t);
}

int strncmp(const char *s,const char *t,unsigned int count)
{
	assert(s!=NULL && *t!-NULL);
	while(*s && *t && *s==*t && count--)
	{
		++s;
		++t;
	}
	return(*s-*t);
}

//字符串连接
char* strcat(char* strDest,const char* strSrc)
{
	assert(strDest!=NULL && strSrc!=NULL);
	if(strDest==strSrc)
		return strDest;
	while(strSrc!='\0')
		strSrc++;
	
	char *address=strDest;
	while((*strDest++=*strSrc++)!='\0')
		
	return address;
}
char* strncat(char* strDest, const char* strSrc,unsigned int count)
{
	assert(strDest!=NULL && strSrc!=NULL);
	if(strDest==strSrc)
		return strDest;
	char *address=strDest;
	while(strSrc!='\0')
		strSrc++;
	while(count-- && *strSrc!='\0')
		*strDest++=*strSrc++;
	*strDest='\0';
		
	return address;
}
//字符串长度
int* len(const char* str)
{
	assert(str!=NULL);
	int len=0;
	while(*str!=NULL)
		len++;
	return len;	
}

//字符串子串
char* strstr(const char* strSrc,const char*str)
{
	assert(strSrc!=NULL && str!=NULL);
	const char* s=strSrc;
	const char* t=str;
	for(;strSrc!='\0';strSrc++)
	{
		for(s=strSrc,t=str;*t!='\0'&&*s==*t;s++,t++);
		if(*t=='\0')
			return (char*)strSrc;
	}
	
}
//内存块复制
void *memcpy(void *dest,const void *src, unsigned int count)
{
	assert(dest!=NULL && src!=NULL);
	(char*)tempdest=(char*)dest;
	(char*)tempsrc=(char*)src;
	
	while(count--)
		*tempdest++=*tempsrc++;
	return dest;
}

//内存块赋值初始化
//函数原型:void *memset(void *str, int c, size_t n)
//功能:以str为起始位置的n个字节的内存区域用整数c进行填充
//参数:str为内存区域的起始位置,c为要填充的字符,n为要填充多少个字节
//返回值:目标str内存的起始地址
void *memset(void *str, int c, unsigned int count)
{
	assert(str!=NULL );
	(char*)tempsrc=src;
	while(count--)
		*tempsrc++=c;
	return str;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值