您的位置:首页 > 其它

模拟实现strncpy ,模拟实现strncat ,模拟实现strncmp

2017-11-22 10:26 381 查看
模拟实现strncpy:

这个函数是将num个字符从源字符串拷贝到目标空间,如果源字符串的长度小于num,则拷贝完字符串后,在目标后面追加0,直到num个。

看代码:

char* my_strncpy(char*dest, const char*src, int n)  
{  
assert(dest);  
assert(src);  
char*p = dest;  
while (n--)  
{  
*p++ = *src++;  
}  
*p = 0;  
return dest;  
}  

模拟实现strncat:

这个函数主要是在字符串结尾加n个字符。strncat(dest,src)函数中src覆盖原先dest的‘\0’,并添加新的‘\0’,src和dest 的内存区域不能重叠,并且dest要有足够的空间来容纳src。

char* my_strncat(char*dest, const char*src, int n)  
{  
assert(dest);  
assert(src);  
char*p = dest;  
while (*p)  
{  
p++;  
}  
while (n--)  
{  
*p++ = *src++;  
}  
*p = 0;  
return dest;  
} 


模拟实现strncmp:

与strcmp不同的是strncmp是指定比较size个字符,当字符串s1,s2相同时返回值是0。这两个函数返回值也不同,后者是在前size字符串相等时返回0,在不相等时返回(str1
-str2
)。

int my_strncmp(const char*str1, const char*str2, int n)  
{  
assert(str1);  
assert(str2);  
while (n--)  
{  
if (*str1 == *str2)  
{  
str1++;  
str2++;  
}  
else  
{  
if ((*str1-*str2)<0)  
return -1;  
else  
return 1;  
}  
}  
return 0;  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: