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
| #include <stdio.h>
#include <string.h>
#include <stdlib.h>
//Cette structure représente une conversion lettre--> morse
struct conversion{ char lettre;
char morse[3];
};
typedef struct conversion Convers;
//Cette structure représente un maillon de la liste.
struct element{ Convers convers;
struct element *suiv;
};
typedef struct element Element;
typedef Element *Liste;
Convers lireConversion(FILE *F)
{
Convers conv;
char lettre;
char morse[3];
char *p;
int i;
fscanf(F,"%c",lettre);
printf("lettre :%c",lettre);
conv.lettre= lettre;
fscanf(F,"%c",morse);
printf("morse :%c",morse);
for(i=0;i<3;i++)
{
conv.morse[i]=morse[i];
}
return(conv);
}
void inserFin (Convers conv, Liste *l)
{
Liste p, q;
if (*l == NULL) //Si la liste est vide, on initialise le premier élement de la liste
{ //avec l'élément donné.
p = (Element*) malloc (sizeof(Element));
p->convers = conv;
p->suiv = NULL;
*l = p;
}
else //Sinon on cherche le dernier élément de la liste puis on place l'élément donné à la suite.
{
p = *l;
//Recherche du dernier élément de la liste.
while (p->suiv != NULL){
p = p->suiv;
}
q = (Element *) malloc (sizeof(Element)); //On place notre élément à la suite.
q->convers=conv;
q->suiv=NULL;
p->suiv = q;
}
}
void afficher(Liste l)
{
Liste p=l;
while(p->suiv != NULL)
{
printf("%c %s\n",p->convers.lettre,p->convers.morse);
p= p->suiv;
}
}
Liste CreeListe()
{
FILE *fp;
Liste l = NULL;
Convers conv;
fp=fopen("source.txt","r");
if(fp==NULL) //Si le fichier n'existe pas
{
printf(" Le fichier n'existe pas \n ");
}
else //sinon on insère dans la liste chaînée
{
while (!feof(fp))
{
conv=lireConversion(fp);
inserFin(conv, &l); //On lit les informations d'une conversion puis
} //on l'insère à la fin de la liste des conversions.
}
fclose(fp);
return(l);
}
main()
{
Liste l;
l=CreeListe();
afficher(l);
} |
Partager