编一程序,将两个字符串连接起来,结果取代第一个字符串。求程序解答

#include <stdio.h>
void main()
{
char s1[80],s2[40];
int i=0,j=0;
scanf("%s%s",s1,s2);
while(s1[i])
i++;
while(s2[j])
s1[i++]=s2[j++];
s1[i]='\0';
printf("The result is:%s\n",s1);
}
最新回答
猫腻仙女要抱抱

2024-05-02 20:51:46

目测没有错#include <stdio.h>
void main()
{
char s1[80],s2[40];
int i=0,j=0;
scanf("%s%s",s1,s2); //输入两个
字符串

while(s1[i]) //目的是让i指向 第一个字符串的最后位置 '\0'所在位置
i++;
while(s2[j]) //此循环就是将第二字符串内容加到第一字符串最后 直到s2 '\0'
s1[i++]=s2[j++];
s1[i]='\0'; //连接结束后 在最后加结束符
printf("The result is:%s\n",s1);//打印连接后字符串
}
灼灼

2024-05-02 02:38:54

代码如下看看是否可行?
//连接两个字符串
#include
#include
#include
#include
char* strcat1(char *strDest , const char *strSrc)//Strcat函数原型如下:将源字符串加const,表明其为输入参数,不会改变其内容
{
//后文return address,故不能放在assert断言之后声明address
char* address=strDest;
assert( (strDest!=NULL)&&(strSrc!=NULL) );//对源地址和目的地址加非0断言
while(*strDest)//是while(*strDest!=’\0’)的简化形式
{
//若使用while(*strDest++),则会出错,因为循环结束后strDest还会执行一次++,
//那么strDest将指向'\0'的下一个位置。/所以要在循环体内++;因为要是*strDest最后指
//向该字符串的结束标志’\0’。
strDest++;
}

while(*strDest++=*strSrc++)
{
NULL;//该循环条件内可以用++,
}//此处可以加语句*strDest=’\0’;无必要
return address;//为了实现链式操作,将目的地址返回
}

int main()
{
char a[100],b[100];
scanf("%s",a);
scanf("%s",b);
strcat1(a,b);
printf("%s",a);
return 0;
}
紫色的梦幻

2024-05-02 00:47:48

程序可以实现上述功能
你滋润了

2024-05-02 18:56:22

所贴的程序已经可以完成所述的功能了。