gpt4 book ai didi

c - 在非结构或 union 错误中请求成员 ‘next’

转载 作者:行者123 更新时间:2023-12-02 06:35:21 24 4
gpt4 key购买 nike

我在 c->next=var; 这一行遇到了问题

我的职能是:

{
struct film
{
int id;
char nom[50];
char typeFilm[50];
int duree;
int dateSortie;
struct film *next;
};

#include<stdio.h>
#include<string.h>
#include "structure_film.h"
#include<stdlib.h>

void ajouter_film(struct film **h,struct film **c)
{
struct film *var;
int s, genre;
do
{
var=(struct film*) malloc(sizeof(struct film));
printf("quel est le nom du film que vous voulez ajouter ? \n");
scanf("%s",var->nom);
printf("\nquel est le type de ce film \n 1-action \n 2-aventure \n 3-romantique \n 4-comedie \n");
scanf("%d",&genre);

switch(genre)
{
case 1 :
strcpy((var->typeFilm),"action");
break;
case 2 :
strcpy((var->typeFilm),"aventure");
break;
case 3 :
strcpy((var->typeFilm),"romantique");
break;
default :
strcpy((var->typeFilm),"comedie");
}
printf("\nquel est sa duree ? \n");
scanf("%d",&var->duree);
printf("\nveuillez entrez le numero de reference de ce film : \n");
scanf("%d",&var->id);
printf("\nquel est l'annee de sortie? \n");
scanf("%d",&var->dateSortie);

if (*h==NULL)
{
*h=var;
*c=var;
}
else
{
printf("i'm in else \n");
*c->next=var;
*c=var;
var->next=NULL;
}
printf("si vous voulez ajoutez un autre film veuillez tapez 1 si non tapez 0 \n");
scanf("%d",&s);
}
while (s!=0);
}
}

最佳答案

问题是这里操作数的优先级:

*c->next=var;

这被评估为:“获取 c 指向的结构的字段 next,然后对其进行引用。”。由于 c 不是指向 struct film 的指针,因此 next 字段不存在。

并且您想要:“引用指针 c,并获取由此产生的指针的字段 next。”因为 *c 指向struct film 的指针,因此它存在字段next

因此,它是:(*c)->next=var; 来改变计算中的优先顺序。

关于c - 在非结构或 union 错误中请求成员 ‘next’,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20783703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com