Bonjour

Pour un exercice sur les liste chainées, je dois insérer un élément en tête de liste et l'afficher ensuite.
Mais lors de l'exécution, ça plante et je ne vois pas pourquoi.
Pourriez-vous m'orrienter dans ma recherche de l'erreur (je pense que c'est dans ma fonction d'affichage mais il y a surement d'autres problèmes )
Si vous avez des suggestions pour améliorer mon code n'hésitez pas non plus
Je vous remercie d'avance

Voici mon code :

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define TAILLE 200
 
 
 
struct i
{
    char nom[TAILLE];
    char prenom[TAILLE];
    char ville[TAILLE];
    int age;
    struct i *psuiv;
};
 
void saisie(struct i *pointeur);
void affichage(struct i *pointeur);
void creeElement(char *nom,char *prenom,char *ville,int age,struct i *pointeur);
void insereTeteListe(struct i *premier,struct i *pointeur);
void afficherListe(struct i *liste);
 
int main()
{
    struct i info,info2,info3,ptete;
    printf("Hello world!\n");
    //saisie(&info);
    creeElement("Thomas","Jean","Paris", 20,&info);
    affichage(&info);
 
    creeElement("Messier","Maxime","Lyon", 19,&info2);
    affichage(&info2);
 
    creeElement("Perry","Fred","Londres", 70,&info3);
    affichage(&info3);
 
    ptete = info;
    info.psuiv = &info2;
    info2.psuiv = NULL;
    /*info2.psuiv = &info3;
    info3.psuiv = NULL;*/
 
    //afficherListe(&ptete);
    insereTeteListe(&ptete,&info3);
    afficherListe(&ptete);
 
    return 0;
}
 
void saisie(struct i *pointeur)
{
    printf("Saisissez votre nom : \n");
    gets(pointeur->nom);
    printf("Saisissez votre prenom : \n");
    gets(pointeur->prenom);
    printf("Saisissez votre ville : \n");
    gets(pointeur->ville);
    printf("Saisissez votre age : \n");
    scanf("%d",&pointeur->age);
}
 
void affichage(struct i *pointeur)
{
    printf("Vous vous appelez : %s %s \n",pointeur->prenom,pointeur->nom);
    printf("Vous etes de : %s \n",pointeur->ville);
    printf("Vous avez : %d ans\n",pointeur->age);
}
 
void afficherListe(struct i *liste)
{
    struct i *tmp = liste;
    /* Tant que l'on n'est pas au bout de la liste */
    while(tmp != NULL)
    {
        /* On affiche */
        printf("%s %s %s %d \n", liste->prenom,liste->nom,liste->ville,liste->age);
        /* On avance d'une case */
        tmp = tmp->psuiv;
    }
 
}
 
void creeElement(char *nom,char *prenom,char *ville,int age,struct i *pointeur)
{
    strcpy(pointeur->nom ,nom);
    strcpy(pointeur->prenom ,prenom);
    strcpy(pointeur->ville ,ville);
    pointeur->age = age;
}
 
void insereTeteListe(struct i *premier,struct i *pointeur)
{
    struct i *temp;
 
    temp = premier;
    premier = pointeur;
    pointeur = temp;
 
}
P.S : Ce qui est en commentaire dans le main fait partie de mes tests ou d'un exercice précédent