今天来为大家介绍结果相较于上一篇更加灵活的内存函数
也可以理解为是他们的升级版
目录
一.strncpy函数
打开cplusplus.com查看该函数
模拟实现strncpy函数 :
思路分析:
for语句实现(参考了 “@呀小边同学” 的代码~~~):
char* my_strncpy(char* dest,char* src , int count)
{
assert(dest != NULL);
assert(src != NULL);
int i = 0;
char* ret = start;
for(i = 0 ; i < count ; i++)
{
*(dest+i) = *(src+i);
if(*(src+i) == '\0')
{
for(i+=1 ; i < count ; i++)
{
*(dest + i) = '\0';
}
}
}
return start;
}
int main()
{
char arr1[] = "abcdefghi";
char arr2[] = "xxxx";
char* ret = my_strncpy(arr1, arr2, 6);
printf("%s\n", ret);
return 0;
}
while语句实现:
char* my_strncpy(char* dest, char* src, size_t count)
{
assert(dest && src);
char* ret = dest;
while (count && (*dest++ = *src++) )
count--;
if (count)
while (--count)
{
*dest++ = '\0';
}
return ret;
int main()
{
char arr1[] = "abcdefghi";
char arr2[] = "xxxx";
char* ret = my_strncpy(arr1, arr2, 5);
printf("%s\n", ret);
return 0;
}
二.strncat函数
strncat函数的概述:
strncat函数的使用:
strncat函数的模拟实现:
思路概述:
for语句代码实现:(参考 “@呀小边同学” 的代码实现)
char* my_strncat(char* dest, char* src, size_t count)
{
char* start = dest;
while (*dest)
{
dest++;
}
while (count--)
if (*src != '\0')
*dest++ = *src++;
return start;
}
int main()
{
char arr1[20] = "abcdefghi";
char arr2[] = "xxxx";
my_strncat(arr1, arr2, 7);
printf("%s\n", arr1);
return 0;
}
while语句代码实现:
char* my_strncat(char* dest ,const char* src , size_t count)
{
assert(dest && src);
char* start = dest;
while (*dest)
{
dest++;
}
return start;
while (count--)
if (!(*dest++ = *src++))
return (start);
*dest = '\0';
return start;
}
int main()
{
char arr1[20] = "abcdefghi"; //要保证空间足够大,否则会报错的
char arr2[] = "xxxx";
my_strncat(arr1, arr2, 7);
printf("%s\n", arr1);
return 0;
}