char *strcpy_1(char *dst,const char *src)
{
while(*dst++=*src++);
return dst;
//notice: wrong return!!!!
} //this is a fault function
// Left it to remind me never commit the same question
char * strcpy_2(char * dst, const char * src)
{
char * cp = dst;//这样定义一个变量是有必要的
while( *cp++ = *src++ ) ;
return dst ;
}
int mystrlen_1(const char *str)
{
int i=0;
while(*str++)
i++;
return i;
}
int mystrlen_2(const char *str)
{
const char *p=str;
while(*str++);
return (int)(str-p-1);
}
char *mystrcat(char *dst,const char *src)
{
char *p=dst;
while(*p)//如果这里是*p++则p指向了'\0'的下一个位置
++p;
while(*p++=*src++);
return dst;
}
char *mystrncat(char *dst,const char *src,int n)
{
char *p=dst;
while(*p)
++p;
while((*p++=*src++)&&n--);
//注意:这里的 *p++=*src++两边得加括号
//逻辑 与 的优先级高于 赋值
*p='\0';
return dst;
}
char *mystrncpy (char *dst,const char *src,int n)
{
char *p=dst;
while(n--&&(*p++=*src++));