二维数组错误

时间:2016-12-22 16:04:06

标签: c arrays multidimensional-array

有人可以解决我的问题并告诉我在哪里失败了吗? 我正在学习,我无法继续学习。

#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;
        }
}

3 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:2)

你有两个问题,都与caract的声明有关。

首先,您不能将两个数组维度都留空;您必须指定至少最外层维度:

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

其次,您的初始值设定项与caract数组的类型不匹配;您已将其声明为char *的二维数组,但您的初始值设定项是包含char *加三个整数字段的记录数组。

答案 2 :(得分:0)

每个字符串都应该在ob.~a();中。我认为你的代码应该是这样的:

""

了解C / C ++中的二维数组,了解它们如何在您的书籍或其他地方发挥作用。