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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct t_liste
{char *nom; char *prenom; char *courriel; struct t_liste *prec;}Maillon;
Maillon *pMaillon=NULL;
Maillon *pTempo=NULL;
int main ()
{
int i=1;
int j=1;
char Nom[32],Prenom[32],Courriel[32];
FILE *pFichier=NULL;
pFichier=fopen("groupes.txt","r");
while(fscanf(pFichier,"%s%s%s",Nom,Prenom,Courriel)!=-1)
{
printf("%d) %s %s %s\n",i++,Nom,Prenom,Courriel);
char *pNom, *pPrenom, *pCourriel;
pTempo=(Maillon *)malloc(sizeof(Maillon));
pNom=(char *)malloc(32*sizeof(char));
pPrenom=(char *)malloc(32*sizeof(char));
pCourriel=(char *)malloc(32*sizeof(char));
if(pTempo==NULL) exit(1);
if(pNom==NULL) exit(1);
if(pPrenom==NULL) exit(1);
if(pCourriel==NULL) exit(1);
printf("Nom=%d\n",*Nom);
strcpy(pNom,Nom);
strcpy(pPrenom,Prenom);
strcpy(pCourriel,Courriel);
pTempo->nom=pNom;
pTempo->prenom=pPrenom;
pTempo->courriel=pCourriel;
pTempo->prec=pMaillon;
pMaillon=pTempo;
}
/*boucle d'affichage de la pile*/
pTempo=(Maillon *)malloc(sizeof(Maillon));
pNom=(char *)malloc(32*sizeof(char));
pPrenom=(char *)malloc(32*sizeof(char));
pCourriel=(char *)malloc(32*sizeof(char));
if(pTempo==NULL) exit(1);
if(pNom==NULL) exit(1);
if(pPrenom==NULL) exit(1);
if(pCourriel==NULL) exit(1);
*pNom="nom";
*pPrenom="prenom";
*pCourriel="mail";
/* strcpy(pNom,Nom);
strcpy(pPrenom,Prenom);
strcpy(pCourriel,Courriel);*/
pTempo->nom=pNom;
pTempo->prenom=pPrenom;
pTempo->courriel=pCourriel;
pTempo->prec=pMaillon;
pMaillon=pTempo;
while(pMaillon)
{
printf("%d) %s %s %s \n",j++,pMaillon->nom,pMaillon->prenom,pMaillon->courriel);
pMaillon=pMaillon->prec;
}
/*désallouer la mémoire et destruction de la pile*/
while(pMaillon)
{
free(pMaillon);
pMaillon=pMaillon->prec;
printf("%p",pMaillon);
}
free(pTempo);
fclose(pFichier);
return 0;
}
malgré qu'il fonctionne je ne sais pas s'il est bien accepté comme code eficace sans faille ou pas (surtout coté libération de mémoire, ..) |
Partager