代碼實作(環境: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 ;
}