在Typedef结构链表C中使用Typedef结构
我无法理解为什么会出现此错误:在Typedef结构链表C中使用Typedef结构,c,struct,linked-list,typedef,C,Struct,Linked List,Typedef,我无法理解为什么会出现此错误: error : expected identifier before '(' token 每次我想在Etat结构中填充Trans结构的数据时,都会出现错误 代码如下: #include<stdio.h> #include<stdlib.h> typedef struct Transition Transition; struct Transition { char symb[5]; int nvEtat[5]; };
error : expected identifier before '(' token
每次我想在Etat结构中填充Trans结构的数据时,都会出现错误
代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct Transition Transition;
struct Transition
{
char symb[5];
int nvEtat[5];
};
typedef struct Etat Etat;
struct Etat
{
int etat;
Transition trans;
int estFinal; /* Etat final ou non */
Etat *suivant;
};
Etat *tete=NULL;
Etat *p;
/*_______________________________________________________________
*/
void Ajouter(void){
int i,j,k;
Etat *nouveau;
j=0;
while(j=0)
{
nouveau = calloc(1,sizeof (struct Etat));
if(nouveau!=NULL){
printf("\nNumero de l'etat : ");
scanf("%d",&(nouveau->etat));
i=0;
for(i=0;i<5;i++)
{
nouveau->(trans->symb[i]) = 'a' ; /*initialize all symbols to a*/
}
i=0;
while(k==0 && i<5)
{
printf("Avec quel symbole vers le nouvel etat : ");
scanf(" %c",&(nouveau->(trans->symb[i])));
printf("Vers quel etat : ");
scanf("%d",&(nouveau->(trans->nvEtat[i])));
printf("Y a t-il encore des transition depuis cet etat ? (0 pour oui ) ");
scanf("%d",&k);
i++;
}
printf("\nEst ce que c'est un etat final ? ( 0 final , 1 non )");
scanf("%d",&(nouveau->estFinal));
if(tete==NULL){
tete=nouveau;
}else{
p = tete;
while(p->suivant !=NULL){
p=p->suivant;
}
p->suivant = nouveau;
}
printf("\nVoulez vous ajouter une autre transition? (0 pour ajouter) ");
scanf("%d",&j);
}else{
perror("\nPas assez de memoire ");
exit(1);
}
}
}
/*_______________________________________________________________
*/
/*_______________________________________________________________
*/
int main(void){
Ajouter();
Afficher();
return 0;
}
如果你能给我一种在另一个结构中使用结构类型的方法,比如转换,那将非常有用
谢谢你的帮助
PS:如果printfs有助于理解代码,我将尝试用英语翻译它我想你只是误解了编译器的错误。为了能够编译,我不得不修改一些东西。nouveau->trans->symb[i]有它不应该有的括号,并且trans成员不是指针。它应该是nouveau->trans.symb[i]。我的VisualStudio还抱怨k在使用前没有初始化。我也应该这样做。谢谢你的帮助,我会尝试改变,看看结果