设计思路:
1、首先我们要找到目标字符串的结尾,即 ‘\0’ 处
2、然后我们再依次把源字符串依次添加到目标字符串的结尾即可
实现源码如下:
#include <stdio.h>
/* 方法1:字符指针方式实现 */
char *my_strcat1(char *dstStr, const char *srcStr)
{
char *tmp = dstStr;
/* 找到目标字符串的结尾 */
while (*dstStr)
dstStr++;
/* dstStr 字符串末尾追加字符串 srcStr */
while ((*dstStr++ = *srcStr++) != '\0');
return tmp;
}
/* 方法2:字符数组下标方式实现 */
char *my_strcat2(char dstStr[], const char srcStr[])
{
int i = 0, j = 0;
/* 先把变量i计数到dstStr字符串的末尾 */
while (dstStr[i] != '\0')
i++;
/* dstStr 字符串末尾追加字符串 srcStr */
while (srcStr[j] != '\0')
dstStr[i++] = srcStr[j++];
/* 此种方法,这里必须要在末尾自己添加字符串结束标志 */
dstStr[i] = '\0';
return dstStr;
}
int main(void)
{
char str1[30], str2[30];
printf("请输入第一个字符串:\n");
scanf("%s", str1);
printf("请输入第一个字符串:\n");
scanf("%s", str2);
printf("str1 + str2 = %s\n", my_strcat1(str1, str2));
return 0;
}
在ubuntu终端下编译,没有任何报错。然后运行结果如下图: