(1)strcpy()函数的实现
(2)strncpy()函数的实现
(3)strre()函数:实现字符串反转
异或运算,常用于“交换两个数,而不借助于中间变量”。
(4)memccpy():从src复制count字节的字符到dest. 如果src和dest出现重叠, 函数会自动处理,返回dest的值.
char* mystrcpy(char* dest, const char* source) //const的用法
{
assert((dest != NULL) && (source != NULL)); //要包含头文件<assert.h>;若条件表达式为假,则终止程序。
char* temp = dest;
while((*dest++ = *source++) != '\0'); //不要丢掉了冒号
return temp;
}
(2)strncpy()函数的实现
char *strncpy(char* strDes, const char *strSrc, int count)
{
assert(strDes != NULL &&strSrc != NULL);
char *address = strDes;
while (count -- && *strSrc !='\0')
*strDes ++ = *strSrc ++;
return address;
}
(3)strre()函数:实现字符串反转
char * srtrev(char * str)
{
char *p1 = NULL, *p2 = NULL;
if(!str)
return str;
for(p1 = str, p2 = str+strlen(str)-1 ; p1 < p2 ; ++p1, --p2)
{
*p1 ^= *p2;
*p1 ^= *p2;
*p2 ^= *p1;
}
return str;
}
http://blog.csdn.net/turingo/article/details/8124432
异或运算,常用于“交换两个数,而不借助于中间变量”。
(4)memccpy():从src复制count字节的字符到dest. 如果src和dest出现重叠, 函数会自动处理,返回dest的值.
void *memmove(void *dest, const void *src, int count)
{
assert(dest != NULL && src != NULL);
void *address = dest;
while (count --)
{
*(char *) dest = *(char *) src;
dest = (char *) dest + 1;
src = (const char *)src + 1;
}
return address;
}