C 二维阵列误差

C 二维阵列误差,c,arrays,multidimensional-array,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}, {"Arm

有人能解决我的问题并告诉我哪里失败了吗? 我在学习,不能再往前走了

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

这不是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);
    }
}

每个字符串都应该在s中。我认为你的代码应该是这样的:

#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++中的二维数组,从您的书或其他地方了解它们是如何工作的。

您有两个问题,都与caract声明有关

首先,不能将两个数组维度都保留为空;必须至少指定最外层的尺寸标注:

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

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

1您尚未指定错误或产生错误的行,2我们不是来为您做作业的,您应该阅读。你的错误是什么?你想对这段代码做什么?为什么不编译它并用调试器运行它,看看会发生什么,然后回答你自己的家庭作业问题?它说:错误:数组类型有不完整的元素类型和David,我已经尝试过做它并设法修复它,但我卡住了,我正在学习,非家庭作业此答案未实现OPs发布代码中的数据。未获取。请解释。OPs问题表示每个条目中有4条数据,一个字符数组指针,加上3个整数。这个答案只针对字符数组,跳过了关于条目应该是指向每个字符数组的指针的部分。是的,我故意这么做,因为他提到这个问题是二维数组错误。这就是我这样回答的原因。