我的结构如下
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
答案 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