我尝试创建一个树。给出了结构定义。但是当为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;
}
}
}
答案 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;
}
}
}