1.模拟实现strncpy
#include<stdio.h>
#include<assert.h>
int my_strncpy(char * dst, const char *src, size_t num)
{
assert(dst);
assert(src);
char *ret = dst;
while (num--)
{
*dst = *src;
dst++, src++;
}
return ret;
}
int main()
{
char src[20] = "1234567";
char dst[20] = "abcdefg";
printf("%s", my_strncpy(dst, src, 4));
system("pause");
return 0;
}
2.模拟实现strncat
#include<stdio.h>
#include<assert.h>
char* my_strncat(char*dst, const char*src, size_t num)
{
assert(dst);
assert(src);
char*ret = dst;
while (*ret)
{
ret++;
}
while (num--)
{
*ret++ = *src++;
}
*ret = 0;
return dst;
}
int main()
{
char str1[10] = "hello";
char str2[10] = "world";
int len = strlen(str1);
char *ret = my_strncat(str1, str2, len);
printf("%s\n", ret);
system("pause");
return 0;
}
3.模拟实现strncmp
#include<stdio.h>
#include<assert.h>
int my_strncmp(const char*str1, const char*str2, size_t num)
{
assert(str1);
assert(str2);
while (num--)
{
if (*str1 == *str2)
{
str1++;
str2++;
}
else
{
if ((*str1 - *str2) < 0)
{
return -1;
}
else
return 1;
}
}
return 0;
}
int main(void)
{
char *str1 = "abcd";
char *str2 = "abcdefgh";
int len = strlen(str2);
int ret = my_strncmp(str1, str2, len);
printf("%d\n", ret);
system("pause");
}