模拟实现strncat
需要注意几点:
- strncat 最多 从源字符串复制len个字符到目标字符数组
- strncat总是在结果后面添加’\0’,而不是用’\0’填充目标剩余空间
程序代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <assert.h>
#include <string.h>
char* MyStrncat(char* dest, char* src, size_t len)
{
assert(NULL != dest && NULL != src);
char* ret = dest;
int offset = 0;
while (*dest)
{
*dest++;
}
if (strlen(src) < len) //判断源字符串长度是否小于len
{
len = strlen(src);
}
while (len--)
{
*dest++ = *src++;
}
*dest = '\0'; //strncat总是在结果后面添加'\0',而不是用'\0'填充目标剩余空间
return ret;
}
int main()
{
char arr1[6] = "World";
char arr2[15] = "Hello ";
printf("%s\n", MyStrncat(arr2, arr1, 9));
return 0;
}
程序运行结果如下: