无法访问节点结构的成员

时间:2017-10-03 14:18:17

标签: c tree

我尝试创建一个树。给出了结构定义。但是当为id赋值时,gateType会出现错误 - "请求gateType不在结构或联合中#34;。我有动态分配的内存对于每个节点。正在读取一个文本文件,这个问题与此问题无关。请帮忙。

void tree(FILE *file);
struct node
{
    char gateType[5];
    int id;
    struct node *input[20];
    struct node *output[10];
};

void main()
{
    FILE *f,*temp;

    f=fopen("c17.bench","r");


    tree(f);
    fclose ( f);

 }
void tree(FILE *file)
{
    while(fgets(line,sizeof(line),file) != NULL) 
   {
       if(line[0] != '#' || line[0] != ' ')
      {
        node *temp = (struct node *)malloc(sizeof(struct node));
        //temp->gateType="and";
        temp -> id = 5;
      }

   }

}

1 个答案:

答案 0 :(得分:0)

正如Paul Ogilvie在评论中指出的那样,你遗漏了两件事:

void tree(FILE *file);
struct node
{
    char gateType[5];
    int id;
    struct node *input[20];
    struct node *output[10];
};

void main()
{
    FILE *f,*temp;

    f=fopen("c17.bench","r");


    tree(f);
    fclose ( f);

 }
void tree(FILE *file)
{
    while(fgets(line,sizeof(line),file) != NULL) 
   {
       if(line[0] != '#' || line[0] != ' ')
      {

问题出在这里:

        node *temp = (struct node *)malloc(sizeof(struct node));

应该是:

        struct node *temp = malloc(sizeof(*temp));

        //temp->gateType="and";

现在你可以:

        snprintf(temp->gateType, sizeof(temp->gateType), "%s\n", "and");

等...

        temp -> id = 5;
      }

   }

}