strncpy函数
函数的定义
函数原型
char *strncpy(char *dest, const char *src, int n)把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,
并返回dest。即复制字符串
函数的实现
char* my_strncpy(char*dest, const char*src, int n)
{
assert(dest != NULL);//保证指针的安全性
assert(src != NULL);
char *p = dest;
while(n--)
{
*p++ = *src++;
}
*p = 0;
return dest;
}
strncat函数的实现
函数的定义
函数原型
char * strncat(char *dest, const char *src, size_t n);
【参数说明】:dest指向目标字符串,src为指向源字符串。把src所指字符串的前n个字符添加到dest所指字符串的结尾处,并覆盖dest所指字符串结尾的’\0’,从而实现字符串的连接。
- 注意
src和dest所指内存区域不可以重叠,并且dest必须有足够的空间来容纳src的字符串。
函数的实现
char* my_strncat(char*dest, const char*src, int n)
{
assert(dest != NULL);
assert(src != NULL);
char *p = dest;
while(*p)
{
p++;
}
while(n--)
{
*p++ = *src++;
}
*p = 0;
return dest;
}
strncmp函数的实现
函数的定义
函数原型
int strncmp ( const char * str1, const char * str2, size_t n );这个函数用来比较s1和s2字符串的前maxlen个字符。如果两个字符串相等的话,strncmp将返回0。
如果s1是s2的一个子串的话,s1小于s2。
此外还有,函数 int strncmp (const char *s1, const char *s2, size_t size) 此函数与strcmp极为类似。不同之处是,strncmp函数是指定比较size个字符。也就是说,如果字符串s1与s2的前size个字符相同,函数返回值为0。
函数的实现
int my_strncmp(const char*str1, const char*str2, size_t num)
{
assert(str1 != NULL);
assert(str2 != NULL);
while(num--)
{
if(*str1 == *str2)
{
str1 ++;
str2 ++;
}
else
{
if((*str1-*str2)<0)
{
return -1;
}
else
{
return 1;
}
}
}
return 0;
}