模拟实现strncpy函数
char* my_strncpy(char *dest, const char *src,int num)
my_strncpy函数有三个参数:
dest类型为char*,用于接收目标字符串的首地址;
src类型为const char*,用于接收源字符串的首地址;
num类型为int,用于接收要改变的字符的个数。
函数返回类型为char*,返回目标字符串的首地址。
char* my_strncpy(char *dest, const char *src,int num)
{
char *ret = dest;
assert(dest && src);
while(num)
{
*dest++ = *src++;
num--;
}
return ret;
}
模拟实现strncat函数
char *my_strncat(char *dest, const char *src, int num)
my_strncat函数有三个参数:
dest类型为char*,用于接收目标字符串的首地址;
src类型为const char*,用于接收源字符串的首地址;
num类型为int,用于接收要连接的字符的个数。
函数返回类型为char*,返回目标字符串的首地址。
char *my_strncat(char *dest, const char *src, int num)
{
char *ret = dest;
assert(dest && src);
while(*dest++ != '\0')
;
dest--;
while(num)
{
*dest++ = *src++;
num--;
}
return ret;
}
模拟实现strncmp函数
int my_ strncmp(const char *s1, const char *s2, size_t num)
my_strncmp函数有三个参数:
s1的类型为const char*,用于接收第一个字符串的首地址;
s2的类型为const char*,用于接收第二个字符串的首地址;
num的类型为size_t,用于接收要比较的字符的个数。
函数返回类型为int类型:若s1>s2,返回1;若s1=s2,返回0;若s1
int my_strncmp(const char *s1, const char *s2, size_t num)
{
int ret = 0;
while(num-- && !(ret=*(unsigned char *)s1-*(unsigned char *)s2))
{
++s1;
++s2;
}
if(ret<0)
return -1;
else if(ret>0)
return 1;
return (ret);
}