2016-09-20 9 views
-2

現在、あるchar配列を別のchar配列にコピーしようとしています。私がそうしようとすると、私は1つの配列の大部分を切り捨てて、 "ed"を受け取ることになります。その結果、私のarr2 []の最後の3文字です。私は組み込みの関数を使用することは許されていないので、これを最初からやってみようとしていますが、私はこの問題に直面しています。任意のヒント?ある文字配列を別の文字配列にコピーしようとするときの問題

#include <iostream> 
#include "Print.h" 


using namespace std; 

void Copy(char arr1[], char arr2[]); 

int main(){ 

    char arr1[] = {"Hello how are you? \0 hiii"}; 
    char arr2[] = { "The weather was cloudy today, so it rained. \0" }; 
    char arr3[] = { "Coffee is a great way to start the day. \0" }; 

    Print(arr1); 

    Copy(arr2, arr3); 

} 
void Copy(char cloud[], char coffee[]){ 

     while (*coffee != '\0') 
     { 
      *cloud = *coffee++; 
      ++cloud; 
     } 

     cout << cloud << endl; 

} 
+0

私のプログラムにある別の機能については、問題はなく、配列を出力します。私はCopy()関数を働かせようとすることに集中しています。 – Tiramisu

+1

コピー後に文字列を終了させるには、おそらく ''\ 0' 'を追加する必要があります。あなたがやっていることは危険で、間違いやすいです。 –

+0

ループの最後に、 'cloud'が最後を指しているので、' cout << cloud'は役に立ちません。 –

答えて

3

私はそうしようとすると私は1つの配列のほとんどを遮断し、受信してしまう「編を。」結果として

Copyの変数を両方ともインクリメントしていて、cloudを終了していないためです。

私の提案:配列インデックスを使用して配列をコピーしてください。

void Copy(char cloud[], char coffee[]) 
{ 
    int i = 0; 
    while (coffee[i] != '\0') 
    { 
     cloud[i] = coffee[i]; 
     ++i; 
    } 

    // Make sure to null terminate cloud 
    cloud[i] = '\0'; 

    // This should produce the expected output. 
    cout << cloud << endl; 
} 
関連する問題