在C语言string这个库中的strcpy,strcat,strcmp这三个函数是通过传递数组的内容来限制它们的,用传参的方式现实字符串的改变长度,模拟实现如下:
1、strncpy:
char* my_strncpy(char *dest, const char *src, int sz)
{
assert(dest && src);
int i = 0;
char *ret = dest;
while (i < sz)
{
*dest++ = *src++;
i++;
}
return ret;
}
int main()
{
char arr[40] = { 0 };
my_strncpy(arr, "hellolokouihu", 4);
printf("%s\n", arr);
return 0;
}
2、strncat:
char* my_strncat(char* dest, const char* src, int sz)
{
assert(dest && src);
char* ret = dest;
while (*ret)
{
ret++;
}
while (sz - -)
{
*ret++ = *src++;
}
*ret = 0;
return dest;
}
int main()
{
char arr[20] = "hello hjh";
my_strncat(arr, "ahcde", 4);
int i = 0;
printf("%s\n", arr);
return 0;
}
3、strncmp
:
int my_strncmp(const char* dest, const char* src, int sz)
{
assert(dest);
assert(src);
while (sz - -)
{
if (*dest == *src)
{
dest++;
src++;
}
else
{
if ((*dest - *src) < 0)
return -1;
else
return 1;
}
}
return 0;
}
int main()
{
char arr1[] = "jisuanji";
char arr2[] = "jisuanjihehe";
int num = 0;
num = my_strncmp(arr1, arr2, 10);
printf("%d\n", num);
return 0;
}