Pourquoi mon programme reste bloqué dans la boucle de la fonction affichée, je pense que la fonction érire et lecture sont mal codées :

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
101
#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 Creer_vide (Voiture **p);
void Ecrire (Voiture *p);
void Lecture (Voiture **p);
void Afficher (Voiture *p);
 
int main(void)                 
{      
 
      Voiture *tete=NULL;
      Lecture(&tete);
	  Afficher(tete);
	  Creer_vide (&tete);
	  Creer (&tete);
	  //Afficher(tete);
	  Ecrire(tete);
      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");
	while(p!=NULL)
	{
		fwrite(p,sizeof(*p),1,fic);
		puts(p->marque);
		p=p->suivant;
	}
	fclose(fic);
	fic=NULL;
}
void Lecture (Voiture **p)
{	
	Voiture *voit=malloc(sizeof *voit);
	FILE *fic = NULL;
	fic = fopen("c:\\test.txt", "rb");
	while (fread(voit,sizeof(*voit),1,fic)!=NULL)
	{
		puts(voit->marque);
		voit->suivant=*p;
		*p=voit;
	}
	fclose(fic);
 
}
 
void Afficher (Voiture *p)
{
	while (p!= NULL)
	{
	printf("%s %s %s\n",p->marque,p->modele,p->puissance);
	p=p->suivant;
	}
}
void Creer_vide (Voiture **p)
{
	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=NULL;
		*p=voit;
	}        
}
Je sais, c'est encore le même programme, mais je dois le rendre impérativement ce soir!!!
Merci d'avance pour votre aide...