void mystrcat1(char str1[], char str2[])
{
int i, j;
for (i = 0; str1[i]; i++)
;
str1[i++] = ' ';
for (j = 0; str2[j]; j++)
str1[i + j] = str2[j];
str1[i + j] = '\0';
}
void mystrcat2(char *str1, char *str2)
{
while (*str1 != '\0')
str1++;
*str1++ = ' ';
while (*str2 != '\0')
*str1++ = *str2++;
*str1 = '\0';
}
int main()
{
char str1[100] = "work together";
char str11[100] = "work together";
char str2[] = "to fight the virus";
mystrcat1(str1, str2);
printf("%s\n", str1);
mystrcat2(str11, str2);
printf("%s", str11);
return 0;
}
先找到字符串1的结束标志'\0',然后从此处开始将字符串2的字符依次复制过来。最后在字符串结尾加上字符串结束标志'\0'
void mystrcat1(char str1[],char str2[])
{
int i=0,j;
while(str1[i]!='\0')
i++;
for(j=0;str2[j]!='\0';j++)
{
str1[i]=str2[j];
i++;
}
str1[i]='\0';
}
第一个函数可以使用数组下标的方法来访问字符数组,然后连接两个字符串;
第二个函数可以使用字符指针来访问字符数组的形式来访问数组,然后连接两个字符串。
一个实现,如下:
参考链接:
c语言整形数组存放字符串,用一维字符数组存放字符串_顶尖PPT的博客-CSDN博客
#include <stdio.h>
#include <string.h>
void mystrcat1(char str1[],char str2[]){
int i=0,j=0;
while(str1[i]!='\0'){ // 使用数组下标的方式遍历完整个str1字符数组,直到字符数组最后的空字符
i++;
}
while(str2[j]!='\0'){ //遍历字符数组str2,把它里面的所有字符复制到字符数组str1
str1[i]=str2[j];
i++;
j++;
}
str1[i]='\0'; //复制完成,在字符数组结尾加上字符串的结尾字符空字符'\0'
}
void mystrcat2(char *str1,char *str2){
while(*str1!='\0'){ // 使用字符指针的方式遍历完整个str1字符数组,直到字符数组最后的空字符
str1++;
}
while(*str2!=0){ //遍历字符数组str2,把它里面的所有字符复制到字符数组str1
*str1=*str2;
str1++;
str2++;
}
*str1='\0'; //复制完成,在字符数组结尾加上字符串的结尾字符空字符'\0'
}
int main(void){
// https://blog.csdn.net/weixin_31885875/article/details/117020399
char s1[30]={"wordk together"};
char s2[30]= {" to fight the virus"};
mystrcat1(s1,s2);
printf("使用mystrcat1()函数后,连接后的字符串为:%s\n",s1);
strcpy(s1,"wordk together");// 把第一个字符串重新复制到字符数组s1
mystrcat2(s1,s2);
printf("使用mystrcat2()函数后,连接后的字符串为:%s\n",s1);
}