在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在使用前没有初始化。我也应该这样做。谢谢你的帮助,我会尝试改变,看看结果