自写实现C语言提供的字符串数组拼接库函数strcat()的功能。
实现功能:输入两个字符串,并把目标字符串数组(第二个字符串数组)拼接到源字符串数组(第一个字符串数组)之后。s1 = s1 + s2 -- 把字符串s2拼接到字符串s1之后。
比如:
源字符串数组(第一个字符串数组):"123abc"
目标字符串数组(第二个字符串数组):"456qwe"
实现把目标字符串拼接到源字符串中。即:"123abc456qwe"
实现过程:通过循环遍源字符串数组(第一个字符串数组)的末尾,之后加上目标字符串数组(第二个字符串数组),最后记得个拼接后的字符串添加结束符 '\0'
#include <stdio.h>
// s1 = s1 + s2 -- 把字符串s2拼接到字符串s1之后。
void my_strcat(char *s1, char *s2) {
// 第一个字符串数组循环遍历到末尾
while (*s1 != 0) {
s1++;
}
// 第一个字符串数组循环遍历到末尾
while (*s2 != '\0') { /* != 0 等同 != '\0' */
*s1 = *s2; // 从源字符串数组(第一个字符串数组)的末尾开始拼接
s1++;
s2++;
}
*s1 = '\0'; // 拼接后的字符串末尾增加'\0'
}
int main() {
char a[64] = {0}, b[64] = {0};
printf("请输入第一个字符串a:"); // 123abc
gets(a);
printf("请输入第二个字符串b:"); // 456qwe
gets(b);
printf("第一个字符串:%s\n", a);
printf("第二个字符串:%s\n", b);
my_strcat(a, b);
printf("a:%s b:%s\n", a, b); // a:123abc456qwe b:456qwe
return 0;
}
运行结果:
注:
1. (*p) != 0 和 (*q) != '\0' 有什么区别?
!= 0 等同 != '\0' -- 这里是判断字符串中的字符不等于结束符'\0'