Bonjour j'ai créé une liste chainée permettant de gérer des employés, mais j'ai un problème avec les pointeurs sur les chaines de caractere. J'ai un erreur de segmentation mais je ne vois pas quelle allocation j'ai ratée.Pouvez vous m'aider?
Sinon quelle est la balise pour afficher du code? J'ai essayé <code> </code> en majuscule et minuscule mais ca marche pas

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
#include <stdlib.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
 
#define MAX 30
typedef struct Employe
{
	char nom[MAX];
	int salaire;
	struct Employe* suivant;
}Employe;
 
typedef Employe* Liste;
 
void ajouteEmploye(Liste *L,Employe *e)
{
	//ajoute un employe en tete de liste
	Liste tmp = malloc(sizeof(Employe));
	tmp->nom = (char*)malloc((strlen(e->nom)+1)*sizeof(char));
	strcpy(tmp->nom,e->nom);
	tmp->salaire = e->salaire;
	tmp->suivant = *L;
 
	*L = tmp;
}
 
void afficheEmploye(Employe* e)
{
	if (e)
		printf("%s\t%d\n",e->nom,e->salaire);
}
 
void afficheListe(Liste L)
{
	while (L)
	{
		afficheEmploye(L);
		L=L->suivant;
	}
}
 
int main()
{
	char * nom;
	int salaire;
	Employe * e = malloc(sizeof(Employe));
	printf("entrez le nom d'un employe et son salaire\n");
	scanf("%s",nom);
	scanf("%d",&salaire);
	e->nom = malloc((strlen(nom)+1)*sizeof(char));
	strcpy(e->nom,nom);
	e->salaire = salaire;
	Liste L = NULL;
	ajouteEmploye(&L,e);
	afficheListe(L);
	return 0;
}