Strncpy
Strncpy的函数功能与Strcpy相似,都是实现字符串的拷贝,但Strncpy可以指定拷贝的个数,这里有一点需要注意,如果指定的拷贝个数大于拷贝源的元素个数,那麽strncpy就会自动补\0,和Strcpy实现思路的不同也就在这里:
char* my_strcnpy(char*dest ,const char*src,unsigned int num)//注意:num大于src里的元素个数自动补0;
{
char* ret= dest;
assert(dest&&src);
while (num--)
{
if (*src != '\0')
{
*dest++ = *src++;
}
else
{
*dest++ = '\0';
}
}
return ret;
}
Strncat
Strncat也是在strcat得出上可以限制添加字符的个数。注意:这里的指定数如果大于源数组的元素个数,并不会补\0
详细程序:
char* my_strncat(char* dest,const char* src, unsigned int num)//注意:num大于src里的元素个数并不补零;
{
assert(dest&&src);
char* ret = dest;
while (*dest != '\0')
{
dest++;
}
while ((*dest++ = *src++) && (--num))//这里--num是因为在num=0时前面的dest和Scr还要再判断赋值一次;nun--会多运行一次
{
;
}
return ret;
}
Strcmp
只在给定的字符数之前进行判断,如果这些字符都一样,就默认字符相等
int my_strncmp(const char* arr1,const char*arr2,unsigned int num)
{
assert(arr1&&arr2);
while (*arr1==*arr2&&--num)
{
arr1++;
arr2++;
}
return *arr1 - *arr2;
}