此文章为截取以下两篇文章的部分内容
http://blog.youkuaiyun.com/herveyhuang/article/details/39755991
https://www.cnblogs.com/heyonggang/p/3196922.html
展现的都是这几个函数的源码即功能,没有实例
strcpy函数:拷贝字符串
char *strcpy(char *Dest , const char *Src)
{ //将src中的字符串拷贝到dest中,并且覆盖掉原来位置上的字符
assert((Dest != NULL) && (Src != NULL));
char *address = Dest;
while((*Dest++ = *Src++) != '\0')
NULL;
return address;
}
strlen函数:返回目标字符串的长度
unsigned int mystrlen(const char* str)
{
assert(str != NULL);
unsigned int len = 0;
while(*str++)
{
len++;
}
return len;
}
strcat函数:连接两个字符串
char *strcat(char *strDest, const char *strSrc)
{ //将strsrc接到strdest后
// 后文return address,故不能放在assert断言之后声明address
char *address = strDest;
assert((strDest != NULL) && (strSrc != NULL)); //对源地址和目的地址加非0断言
while(*strDest) //是while(*strDest!=’\0’)的简化形式
{
//若使用while(*strDest++),则会出错,因为循环结束后strDest还会执行一次++,
//那么strDest将指向'\0'的下一个位置。/所以要在循环体内++;因为要是*strDest最后指
//向该字符串的结束标志’\0’。
strDest++;
}
while(*strDest++ = *strSrc++)
{
NULL; //该循环条件内可以用++,
} //此处可以加语句*strDest=’\0’;无必要
return address; //为了实现链式操作,将目的地址返回
}
strcmp函数:比较两个字符串
int strcmp(const char* str1, const char* str2)
{ //比较str1和str2两个字符串的大小
assert((str1 != NULL) && (str2 != NULL);
int ret = 0;
while (!(ret = (unsigned char*)*str1 - (unsigned char*)*str2) && (*str2))
{
str1++;
str2++;
}
if (ret > 0)
{
return 1;
}
else if (ret < 0)
{
return -1
}
return 0;
}