Bonjour,

j'ai fait une fonction qui extrait le maillon d'une liste chainée sur base d'un nom.
Elle fonctionne très bien si le nom est rentré correctement en Majuscule ou minuscule.
J'aimerai bien ajouter une condition qui afficherai "Etudiant inconnu" s'il ne trouve pas le nom dans la liste ou si on fait une faute de frappe dans le nom.
Problème, mon programme ci-dessous plante s'il ne trouve pas le nom ou s'il y a une erreur de frappe.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
Etudiant *ExtractElt(Etudiant **tete, char nomEtu[])
{
    Etudiant *EltCourant,*prec;
    if(*tete != NULL)//Si la liste n'est pas vide
    {
        if(stricmp((*tete)->nom, nomEtu) == 0)// si Elt chercher est premier de la liste
        {
        EltCourant = *tete;
        *tete = (*tete)->next;
        return EltCourant;
        }
        if(stricmp((*tete)->nom, nomEtu) > 0)
        {
            printf("Etudiant inconnu!");
        }
        else// sinon c'est peut-être un des autres
        {
            prec = *tete;
            EltCourant = (*tete)->next;
            while(EltCourant != NULL )
            {
                if (stricmp(EltCourant->nom, nomEtu) == 0)
                {
                    prec->next = EltCourant->next;
                    return EltCourant;
                }
            prec = EltCourant;
            EltCourant = EltCourant->next;
            }
        }
    }
    return EltCourant;
}