模拟实现strcat,用函数实现strcat及strcat的原理

  

        strcat是字符串追加函数,括号中可给定两个参数,其中参数destination要追加的目标地址,而参数二source是用于追加的源地址

总结:strcat是将其函数中参数二的内容追加到参数一字符串后方。

二 下面咱用手敲代码演示其原理

注意:请从main函数开始读

char* my_strcat(char* s1, const char* s2)//注意返回值是char*
{
	char* pp = s1;//用pp加加,s1保留首地址
	while (*pp)//解引用得到目前pp指向的值,如果是'\0'说明是最后一位。
	{          // '\0'的ASCII值是0(为假),会自动跳出循环
		pp++;//pp指向地址加1(指向下一个地址)
	}
	while (*pp = *s2)//将s2的值赋值给*pp(也就是s1地址的内容)
	{
		pp++;//pp指向下一个地址
		s2++;//s2指向下一个地址
	}
	return s1;//返回s1首地址
}
int main()
{
	char s1[100] = { 0 };//s1开大一点,因为s2的内容会填到s1中。太小会导致越界
	char s2[50] = { 0 };
	printf("请输入s1:\n");
	scanf("%s", s1);
	printf("请输入s2:\n");
	scanf("%s", s1);
	printf("s1:%s", my_strcat(s1, s2));//函数返回值为s1首地址所以可以直接打印
	return 0;
}

如果上面的读懂了,可以看看下面这个更简洁的,上面只是为了让大家理解

char* my_strcat(char* s1, const char* s2)
{
	char* pp = s1;
	while (*pp)
	{
		pp++;
	}//找pp'\0'
	while (*pp++ = *s2++);  //将s2的值赋值给*pp(也就是s1地址的内容)
	return s1;              //返回s1首地址
}
int main()
{
	char s1[100] = { 0};//s1开大一点,因为s2的内容会填到s1中。太小会导致越界
	char s2[50] = { 0 };
	printf("请输入s1:\n");
	scanf("%s", s1);
	printf("请输入s2:\n");
	scanf("%s", s2);
	printf("s1:%s", my_strcat(s1, s2));//函数返回值为s1首地址所以可以直接打印
	return 0;
}

注意:以上由于输入用的是scanf,所以输入时不要有空格不然会出错。想输入带空格应用gets

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值