私は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;
}
をあなたの中の単語やフレーズを追加する方が良いでしょう:
それが出力する、うまく動作しますあなたの「回避策」の代わりに質問本体を使用してください。 –
タイトルだけではこの問題には十分であったでしょうが、スタックオーバーフローではありません。あなたは少なくともそれが失敗したという理由で言及することができました。 –
2つの問題があります。 'string_a'と' string_b'をポインタではなく配列として宣言しました。したがって、それらのアドレスは不変なので、 'string_a ++'と 'string_b ++'はエラーを生成するはずです。また、結果をヌル文字とコピーして比較していることを明確にするために、while((x = y)!= '\ 0') 'と書く方が良いでしょう。一般に、 'if'または' while'条件としての単一の '= 'は赤いフラグです。 –