访问结构数组中的数组

时间:2013-04-05 06:20:22

标签: c visual-studio-2010

我的结构如下

struct a
{
    char* ap;
    char* inputs[10];
    int e;
};

然后我创建了一个这样的结构数组,比如struct a list [100];

现在我想填充数组输入[10],为此我使用语法访问第一个位置:

    ip=0;
    inp=0;
    list[ip].inputs[inp]

但我在编译代码时遇到错误“错误C2107:非法索引,间接不允许”

请建议如何访问结构数组中的数组位置。

regards
priya 

3 个答案:

答案 0 :(得分:1)

这里使用结构中的字符指针数组。所以最初你通过100的创建列表为你的结构分配内存。我认为你没有为你的字符指针数组创建内存。您必须为每个字符指针创建内存。所以我建议使用示例代码。

#include <stdio.h>

struct a
{
char* ap;
char* inputs[10];
int e;
};

int main()
{
    int ip=0;
    int inp=0;
    struct a list[100];
    list[ip].inputs[inp]= (char*)malloc(25);
    scanf("%s",list[ip].inputs[inp]);//Or other copy function to fill string
    printf("output %s",list[ip].inputs[inp]);
}

答案 1 :(得分:0)

在我的电脑上工作正常..这是我的代码..

#include <stdio.h>

struct a
{
char* ap;
char* inputs[10];
int e;
};

int main()
{
    int ip=0;
    int inp=0;
    struct a list[100];
    list[ip].inputs[inp] = 'A';
    printf("This: %c", list[ip].inputs[ip]);
    return 0;
}

OUTPUT =这:A

让我知道它是否有帮助。

答案 2 :(得分:0)

结构本身没有数据。您需要创建结构类型的对象并设置对象...

     struct a
        {
        char* ap;
        char* inputs[10];
        int e;
        };

/* I like to separate the type definition from the object creation */
struct a list [3];


list [0].inputs[0] = "Choclate";
list [0].inputs[1] = "Almond";
list [0].inputs[2] = "Rasberry";

希望它有用。另请参阅this article