#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);}
目测没有错#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);//打印连接后字符串}
代码如下看看是否可行?//连接两个字符串#include#include#include#includechar* 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;}