2017-04-15 10 views
0

私はいくつかの変数を交換したいarduino IDEにプログラムを書いています。あなたがarduinoを知らないのであれば、それは基本的にC++で書かれています。背景情報の温度変数が配列から正しい値を割り当てていない

ビット:

  • 個は
  • 個 "n" は、 "1"、 "2"、...、 "5" の文字列が返された2Dアレイです、又は "6"
  • Serial.println(MSG)は、単に印刷機能

は、ここでは、コードされる:

String temp = Pieces[piece][0]; 
Serial.println(temp); 
Serial.println(Pieces[piece][0]); 

コードは同じ値の2戻り、しかしそれは実際に返すことであるべきである。

"" 
"n" 

最初の値も同様であるNなければならないが、それは単に空白です。ここでは個が初期化された方法です。

String Pieces[27][6] = 
    { 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    {"t", "t", "t", "t", "t", "t"} 
    }; 

問題は、配列が大きすぎるということですので、私は代わりに、文字列の文字にそれを変更しようとしましたが、その動作していないました。

相続人は、それが今のように見えるもの:

char Pieces[27][6] = 
{ 
    {"n", "n", "n", "n", "n", "n"}, 
    {"n", "n", "n", "n", "n", "n"}, 
    ... 
    {"t", "t", "t", "t", "t", "t"} 
}; 

そしてHERESに誤りのは、私を与える:

error: too many initializers for 'char [6]' 

誰かが私はそれを正しく初期化するのに役立つだろうか?

+0

'ピース'セットはどのように設定され、 'ピース'配列ディメンションの境界は何ですか? – twain249

+0

私は質問を編集して、どのように作品が見えるかを示します。 – Scurb

+0

のコードがうまくいるようです。メモリ不足の問題やシリアルインターフェイスの問題など、他の要因を除外しましたか?小さなアレイで試しましたか?一次元配列で試しましたか? –

答えて

0

実際に複数の文字列が必要な場合は、Stringの代わりにcharを単純に使用するか、char[]を使用することを検討する必要があります。

あなたの初期設定は次のようになります。

char Pieces[][6] = 
{ 
    {'n', 'n', 'n', 'n', 'n', 'n'}, 
    {'n', 'n', 'n', 'n', 'n', 'n'}, 
    ... 
    {'t', 't', 't', 't', 't', 't'} 
}; 

とあなたの割り当てはchar *型を使用し、あなたは文字列を使用する必要がある場合には

char temp = Pieces[piece][0]; 

次のようになります。

char* Pieces[][6] = 
    { 
     { "n", "n", "n", "n", "n", "n" }, 
     ... 
     { "n", "n", "n", "n", "n", "n" } 
    }; 

char *temp = Pieces[0][1]; 

あなたが派手な文字列操作を実行しない場合、Stringクラスは私たちではありませんとにかくあなたのためにeful。

ちなみに、初期化するときに、配列のサイズをどのように使い分けることができますか。

+0

すべては完璧に機能し、応答に歓声を上げます。 – Scurb

関連する問題