2016-12-22 9 views
-2

誰かが私の問題を解決し、どこで失敗したのか教えていただけますか? 私は勉強しており、それ以上はできません。2次元配列エラー

#include<stdio.h> 
int main() 
{ 
    int i, j; 
    char *caract[][] = { {"Bandeira",1,10}, 
         {"Superior",2,1,1}, 
         {"Pele dura",3,2,2}, 
         {"Armadura",4,2,3}, 
         {"Faca",5,1,1}, 
         {"Espada",6,2,2}, 
         {"Agressao",7,1,1}, 
         {"Ecologico",8,1,1}, 
         {"HeatSeeker",9,1,1}, 
         {"BuildSeeker",10,1,1}, 
         {"walker",11,1,1}, 
         {"Remedio",12,2,1}, 
         {"SecondChance",13,3,0} }; 
     for(i=0; i<13; i++) 
     { 
      for(j=0; j<3; i++) 
       printf("\n%c\n", caract[i][j]); 
      j=0; 
     } 
} 
+1

1)あなたはエラーを特定していないか、それをどのラインが生成しているのですか2)あなたの宿題はここにはありません – itsme86

+1

あなたは['良い質問をどうやるのですか' /stackoverflow.com/help/how-to-ask)。あなたのエラーは何ですか?このコードで何をしたいですか? –

+1

あなたはそれをコンパイルしてデバッガで実行して、何が起こっているのかを知り、自分の宿題に関する質問に答えるのはなぜですか? –

答えて

2

これはPHPやjavascriptではないので、複数の型の配列を宣言するだけではなく、コンパイラがあなたのために作業することを期待しています。構造体を使用して、各要素の定義を定義する必要があります。

#include <stdio.h> 
#include<stdio.h> 

struct INeedToDoMyOwnHomework 
{ 
    const char *string; 
    int i1; 
    int i2; 
    int i3; 
}; 

int main() 
{ 
    int i, j; 
    struct INeedToDoMyOwnHomework thingarray[] = { {"Bandeira",1,10}, 
         {"Superior",2,1,1}, 
         {"Pele dura",3,2,2}, 
         {"Armadura",4,2,3}, 
         {"Faca",5,1,1}, 
         {"Espada",6,2,2}, 
         {"Agressao",7,1,1}, 
         {"Ecologico",8,1,1}, 
         {"HeatSeeker",9,1,1}, 
         {"BuildSeeker",10,1,1}, 
         {"walker",11,1,1}, 
         {"Remedio",12,2,1}, 
         {"SecondChance",13,3,0} }; 
    for(i=0; i<13; i++) 
    { 
     printf("\n%s\n", thingarray[i].string); 
    } 
} 
0

すべての文字列は、""にする必要があります。

#include<stdio.h> 
int main() 
{ 
    int i, j; 
    char caract[13][20] = { "Bandeira", 
         "Superior", 
         "Pele dura", 
         "Armadura", 
         "Faca", 
         "Espada", 
         "Agressao", 
         "Ecologico", 
         "HeatSeeker", 
         "BuildSeeker", 
         "walker", 
         "Remedio", 
         "SecondChance"}; 
     for(i=0; i<13; i++) 
     { 
      for(j=0; j<3; j++) 
       printf("\n%c\n", caract[i][j]); 
     } 
    return 0; 
} 

は、彼らがあなたの本から、あるいはどこか他のどのように機能するかを知るためにC/C++での約2次元配列を学ぼう:私はあなたのコードはこの1つのようであるべきだと思います。

+0

この答えは実装されていませんOPのデータはコードを投稿しました。 – user3629249

+0

それを取得できませんでした。どうか説明してください。 – Najat

+0

OPの質問は、各エントリの4つのデータ、char配列ポインタ、3つの整数を示します。この答えは、文字配列にのみ対応し、エントリは各文字配列へのポインタである必要があります。 – user3629249

2

あなたには2つの問題があり、両方とも、caractの宣言と関係しています。

まず、両方の配列次元を空にすることはできません。あなたは少なくとも最も外側の寸法(複数可)を指定する必要があります。

第二
char *caract[][N] = {...}; // inner dimension determined by number of elements in the initializer 

、あなたの初期化子はあなたのcaract配列の型と一致しません。 char *の2次元配列として宣言していますが、初期化子はchar *と3つの整数フィールドを含むレコードの配列です。