您的位置:首页 > 其它

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

2018-01-27 21:17 429 查看
字符串拷贝、字符串比较、字符串连接、字符串长度、字符子串、内存块复制、内存块赋值初始化

//字符串拷贝
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐