2

我的结构如下

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 
4

3 回答 3

1

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

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

输出=这个:A

让我知道它是否有帮助..

于 2013-04-05T06:34:20.970 回答
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]);
}
于 2013-04-05T07:04:45.733 回答
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";

希望它会有用。也可以参考这篇文章

于 2013-04-05T06:36:09.433 回答