我想做一个C风格的字符串副本,但有些东西不能正常工作。我究竟做错了什么?基本的C风格的字符串副本
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main() {
char string_a[20]="Good day!";
char string_b[30]="Hi!";
int i=0;
cout << "string a: " << string_a << endl;
cout << "string b: " << string_b << endl;
while (*string_a++ = *string_b++) {
cout << ++i << endl;
}
cout << "string a: " << string_a << endl;
cout << "string b: " << string_b << endl;
return 0;
}
这将是更好的词和词组在您的问题的身体,而不是你的“解决方法”。 –
也许标题本身就足以解决这个问题...但是,不是堆栈溢出。你至少可以提到_why_它失败了。 –
两个问题。你已经将'string_a'和'string_b'声明为数组,而不是指针。因此,它们的地址是不可变的,所以'string_a ++'和'string_b ++'应该会产生错误。另外,最好写'while((x = y)!='\ 0')'以清楚地表明你正在复制结果并将其与空字符进行比较。一般来说,一个'='作为'if'或'while'条件是一个红旗。 –