2016-11-13 9 views
-2

私はC文字列の次の2つの2D配列を持っています。 strcpy()関数を使って最初のものを2番目のものにコピーしようとしています。しかし、私はランタイムエラーを取得し続けます。ランタイムチェック失敗#2 - C文字列の配列

#define _CRT_SECURE_NO_WARNINGS 

#include <cstring> 
#include <iostream> 

using namespace std; 

int main() { 

    char word1[3][3] = { "Hello", "Bonjour", "Ni Hao" }; 
    char word2[3][3] = { "Steve", "Pei", "Frank" }; 

    char temp[] = ""; 

    for (int i = 0; i < 3; i++) { 
     strcpy(temp, word1[i]); 
     strcpy(word1[i], word2[i]); 
     strcpy(word2[i], temp); 
    } 


    for (int i = 0; i < 3; i++) { 
     cout << word2[i] << " "; 
    } 

    cout << endl; 
} 
+0

実際の実行時エラーを指定した場合は、より良いヘルプを得ることができ、b)それぞれの文字列に十分なスペースを提供する必要があります。終端のゼロを考えると、3文字の配列に収まる単一の文字列はありません。 –

+0

また、文字列 'temp'は' word'sよりも短く、何も保持できません。 C++の 'std :: string'を使うなど、もっと簡単に何かを試してみましょう。 –

+0

あなたは2つの** 1D **配列の "C-strings"を使用しています。実際の2D配列に「列」(または行)を追加する、または最初の配列を上書きすることはあなたの目標ですか? –

答えて

0

あなたのコードにはいくつか間違いがあります。

  • あなたのchar配列word1word2tempはproperly.youがarraysizeを増やす必要が初期化されていません。あなたの言葉の長さは、だからここに私はあなたが少しどのようarrayの大きさとしての活用user inputをsolution.But与える4.

よりおろし金なった場合3.itはあなたの出力を中断します使用して、ループ内の

  • 入力が適切に一致することができます。

    #define _CRT_SECURE_NO_WARNINGS 
    
    #include <cstring> 
    #include <iostream> 
    
    using namespace std; 
    
    int main() { 
    
        char word1[10][10] = { "Hello", "Bonjour", "Ni Hao" };//increase array size to fit word 
        char word2[10][10] = { "Steve", "Pei", "Frank" };//same here 
    
        char temp[10] = "";//same here 
    
        for (int i = 0; i < 10; i++) { 
         strcpy(temp, word1[i]); 
         strcpy(word1[i], word2[i]); 
         strcpy(word2[i], temp); 
        } 
    
    
        for (int i = 0; i <10; i++) { 
         cout << word2[i] << " "; 
        } 
    
        cout << endl; 
    }