字符串拷贝、字符串比较、字符串连接、字符串长度、字符子串、内存块复制、内存块赋值初始化
//字符串拷贝
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;
}