strcat函数的原理:
将两个字符串内的数据进行拼接,将拼接好的数据放在目标字符串中。
编程思想:
使用char类型的两个指针(dest,src)指向目标字符串和只读字符串首地址,通过while循环使指针(dest)指向目标字符串尾地址,再通过while循环从只读字符串首位的值赋给目标字符串尾地址的后一位,直到指针src指向只读字符串尾地址的后一位(‘\0’),最后将‘\0’赋给目标字符串的尾地址。
具体代码:
#include <stdio.h>
/*
功能:从终端获取两个字符串,实现字符串的拼接
参数:目标字符串dest,只读字符串src
返回值:指向拼接后目标字符串的指针
*/
char *my_strcat(char *dest,const char *src){ //第二个字符串的元素不可改变 需加const关键字
char *first = dest;
while(*first){ //将指针dest指向目标字符串的尾地址
*first++;
}
while(*src){
*first++ = *src++; //将只读字符串拼接在目标字符串后
}
*first = *src; //将只读字符串‘\0’赋值给目标字符串的最后一位
return dest;
}
int main(int argc, const char *argv[])
{
char s1[64] = "0"; //定义目标字符串s1的大小并将其初始化
char s2[64] = "0"; //定义字符串s2的大小并将其初始化
printf("输入字符串s1:\n");
scanf("%s",s1);
printf("输入字符串s2:\n");
scanf("%s",s2);
printf("字符串s1变为:%s\n",my_strcat(s1,s2));
return 0;
}
注意:
1.主函数中的目标字符串(s1)和只读字符串(s2)的大小会影响终端输入各字符串元素的个数。
2.函数体中最后必须将只读字符串的末位‘\0’赋给目标字符串,不然目标字符串在输出时可能错误判断结尾,输出随机值。
运行结果: