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
| void ajoutArc(int j,int nbS,ChainonRue *prec)
{
ChainonRue *c=(ChainonRue*)malloc(sizeof(ChainonRue));
// en C, le cast (ChainonRue *) est inutile et parfois nuisible
// Par contre, il FAUT tester le retopur du malloc
int numSom,poids;
while(j<=nbS)
{
/*Creation du chainon*/
// il vaut mieux ne pas utiliser scanf mais plutôt le couple
// fgets / strtol :
// fgets(temp, sizeof(temp), stdin);
// poids = strtol(temp, NULL, 10);
fscanf(f,"%d",&poids);
c->poids=poids;
// idem ici pour scanf
fscanf(f,"%d",&numSom);
c->sommetSucc=&tabSommet[numSom];
c->chainonRueSuivant=NULL;
printf("chainon cree : %d %d \n",c->poids,numSom);
if(j==1)
prec=c; // ici prec est modifié mais à la sortie de la fonction
// il reprend son ancienne valeur, c'est comme si
// tu n'avais rien fait.
// il faut espérer aussi que prec qui est un pointeur n'est pas NULL !
else
prec->chainonRueSuivant=c;
ajoutArc(j++,nbS,c);
}
} |
Partager