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 130 131 132 133 134 135 136 137 138
|
/* -ed-
Reformattage
Suppression commentaires //
ajoute 'static' aux fonctions privees
*/
#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;
static Convers lireConversion(FILE *F)
{
Convers conv;
char lettre;
char morse[3];
/* -ed- non utilise
char *p;
*/
int i;
/* -ed- ajoute '&' */
fscanf(F,"%c",&lettre);
printf("lettre :%c",lettre);
conv.lettre= lettre;
/* -ed- mis "%s" */
fscanf(F,"%s",morse);
printf("morse :%s",morse);
/* -ed- et strcpy() ? */
for(i=0;i<3;i++)
{
conv.morse[i]=morse[i];
}
return(conv);
}
static 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;
}
}
static void afficher(Liste l)
{
Liste p=l;
while(p->suiv != NULL)
{
printf("%c %s\n",p->convers.lettre,p->convers.morse);
p= p->suiv;
}
}
/* -ed- ajoute void */
static Liste CreeListe(void)
{
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.
/* -ed- deplace. fclose(NULL) = comportement indefini */
fclose(fp);
}
return(l);
}
/* -ed- ajoute int et void */
int main(void)
{
Liste l;
l=CreeListe();
/* -ed- ajoute protection */
if (l != NULL)
{
afficher(l);
}
/* -ed- ajoute */
return 0;
} |
Partager