c++:编写一个函数void my_strcat(char s1[],char s2[]),将s2中的字符串拷贝到数组s1尾部,要求:

高手,打扰一下,c++:编写一个函数void my_strcat(char s1[],char s2[]),将s2中的字符串拷贝到数组s1尾部,要求:?

编写一个函数void my_strcat(char s1[],char s2[]),将s2中的字符串拷贝到数组s1尾部,要求:
1不允许使用c语言的库函数strcat()
2在主函数中输入两个字符串,调用函数my_strcat()进行字符串连接,并在主函数中输出字符串s1和s2的内容(s1足够长就行)
(简单点我是初学者)
最新回答
总有贱妇计谋本宫

2024-06-04 05:23:34

#include <stdio.h>

char *strcat(char s1[],char s2[]) {  // 数组法

int i,j,len1 = 0,len2 = 0;

for(i = 0;s1[i];i++) len1++;

for(i = 0;s2[i];i++) len2++;

for(i = len1,j = 0;i < len1 + len2;++i,++j) 

s1[i] = s2[j];

s1[i] = '\0';

return s1;

}

void main() {

char s1[100] = "Visual C++ 2010 完全手册 ";

char s2[] = "ISO/ANSI C++ Windows";

printf("%s\n%s\n",s1,s2);

printf("\n%s\n\n",strcat(s1,s2));

}

追问
要scanf的谢谢而且有错饿
巷深缘浅

2024-06-04 00:41:54

#include <stdio.h>

#include <string.h>

void my_strcat(char s1[],char s2[])
{
int m=strlen(s1); //调用了求字符串长度的函数。如果你也不想使用的话,相信你自己会做。
int n=strlen(s2);
int i;
for(i=0;i<n;i++)
{
s1[m+i] = s2[i];
}
s1[m+n] = '\0';

return ;
}

void main()
{
char s1[100]="xiongshuai",s2[]="xiha";
my_strcat(s1,s2);

puts(s1);
puts(s2);
}

有问题请追问,满意请采纳
追问
测试对了但是没有效果
追答
没有效果,是指什么?
你需要输入的话,那就改一下前面输入的过程吧
char s1[100],s2[20];
gets(s1);
getchar(); //这句去掉回车的影响
gets(s2);
这样就输入了两个字符串吧