2012-03-01 46 views
1

说我们有一个结构内的字符串,阵列用C

typedef struct{ 
    char* ename; 
    char** pname; 
}Ext; 

Ext ext[5]; 

我所试图做的是填充数据如下:

ext[0].ename="XXXX"; 
ext[0].pname={"A", "B", "C"}; // and so on for the rest of the array 

- 我敢肯定这是不是这样做的正确方式,因为我得到错误。请让我知道这样做的正确方法。谢谢。

+2

这是功课吗?如果是这样,你应该这样标记它。 – Perry 2012-03-01 19:22:57

+0

另外,你是否试图静态分配大量这样的结构? – Perry 2012-03-01 19:24:31

回答

4

第一项作业是正确的。第二个不是。您需要动态分配阵列:

ext[0].pname = malloc(sizeof(char*) * 5); 
ext[0].pname[0] = "A"; 
ext[0].pname[1] = "B"; 
//and so on 
//you can use a loop for this 
1

您没有提到您正在使用的编译器。如果是符合C99-,那么下面应该工作:

const char *a[] = {"A", "B", "C"}; // no cast needed here 
    const char **b; 
    void foo(void) { 
     b = (const char *[]){"A", "B", "C"}; // cast needed 
    } 

你的阵列是一个typedef定义结构内这里是无关紧要的。

+1

这正是我所期待的。谢谢你救了我一些头痛。 – treintje 2017-11-11 01:42:40