Mon programme remplis mal le fichier, lorsque j'essaye de le lire et le mettre dans un maillon, il me sort n'importe quoi!!!

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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
 
 
typedef struct Voiture        //Définition de la structure Voiture
{
        char marque[20];
        char modele[20];
        char puissance[3];
        struct Voiture *suivant;
}Voiture;
 
 
void Creer (Voiture **p);
void Ecrire (Voiture *p);
void Lecture (void);
 
int main(void)                 
{      
 
      Voiture *tete=NULL;
	  Creer (&tete);
	  Ecrire(tete);
	  Lecture();
	  //system("cls");
	 // printf("%s\n",tete->marque);
	  //printf("%s\n",tete->suivant->marque);
      free(tete); tete=NULL; /* il faut liberer la memoire. C'est tres imporant */
	  return EXIT_SUCCESS; 
 
 
 }
 
void Creer (Voiture **p)        //Définition de la fonction Creer qui est de type Voiture
{		
		Voiture *voit=malloc(sizeof *voit);
		if(voit != NULL)
		{
			printf("Entrez la marque :\n");
			scanf("%s",&(voit->marque));
			printf("Entrez le modele :\n");
			scanf("%s",&(voit->modele));
			printf("Entrez la puissance :\n");
			scanf("%s",&(voit->puissance));
			voit->suivant=*p;
			*p=voit;
		}        
}
void Ecrire(Voiture *p)
{	
 
	FILE *fic = NULL;
	fic = fopen("c:\\test.txt", "wb");
	fwrite(p,sizeof(p),1, fic);
	fclose(fic);
	fic=NULL;
}
void Lecture (void)
{	
	Voiture *voit=malloc(sizeof voit);
	FILE *fic = NULL;
	fic = fopen("c:\\test.txt", "rb");
	while(fread(voit,sizeof(voit),1,fic))
	{
		printf("%s,: %s : %s;",voit->marque,voit->modele,voit->puissance);
	}
 
	fclose(fic);
	fic=NULL;
}