我试图在不使用+运算符的情况下将两个字符串粘在一起,也使用循环到该字符串。问题是当它读取两个字符串时无法打印第二个字符串并且仅出现第一个字符串。
这是我的代码
这段代码就像将两个字符串复制在一起。

char str1[MAX];
char str2[MAX];

cout<<"Enter The first String:\n";
cin.getline(str1,MAX,'\n');
cout<<"Enter the second String:\n";
cin.getline(str2,MAX,'\n');

char str3[2*MAX];   int k=0;

for(int i=0;i<MAX;i++)
{ str3[k]=str1[i];  k++;    }
for(int j=0;j<MAX;j++)
{ str3[k]=str2[j];  k++;    }

str3[k]='\0';
cout<<endl<<"Here is the concatenated string:\n";
cout<<str3<<endl;

最佳答案

最好使用指针编写此类代码。

所以我用这个错误的代码代替

char str3[2*MAX];   int k=0;

for(int i=0;i<MAX;i++)
{ str3[k]=str1[i];  k++;    }
for(int j=0;j<MAX;j++)
{ str3[k]=str2[j];  k++;    }

str3[k]='\0';

对于以下
char str3[2 * MAX];

char *p = str3;

char *q = str1;

while ( *p = *q++ ) ++p;

q = str2;

while ( *p++ = *q++ );

也可以使用for循环编写相同的内容。例如
char str3[2 * MAX];

char *p = str3;

for ( char *q = str1; *p = *q++; ++p );
for ( char *q = str2; *p++ = *q++; );

09-06 07:33