代码实现(环境:Visual Studio 2017)
//1.模拟实现strncat
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <assert.h>
#pragma warning( disable : 4996)
char * My_strncat(char * dest, const char *src, size_t n)
{
assert(dest);
assert(src);
char *ret = dest;
while (*dest)
{
dest++;
}
while (n--)
{
*dest++ = *src++;
}
*dest = '\0';
return ret;
}
int main()
{
char str1_0[] = "123456789";
char str1_1[] = "123456789";
char str2[] = "abcde";
printf("调用strncat之前: str1_0: %s \n", str1_0);
strncat(str1_0, str2, ); //调用系统strncpy
printf("调用strncat之后: str1_0: %s \n", str1_0);
printf("调用My_strncat之前: str1_1: %s \n", str1_1);
My_strncat(str1_1, str2, ); //调用My_strncpy
printf("调用My_strncat之后: str1_1: %s \n", str1_1);
system("pause");
return ;
}