Bonjour dans le cadre d'un projet j'ai un programme de traduction de morse à faire en C.

Je recupere à partir d'un fichier texte, le code morse correspondant à chaque lettre.

Ce code est dans un char*. Je dois ensuite remplir une liste chainée (obligatoirement) contenant ce meme code et la lettre correspondant.


j'ai donc une liste:

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
 
#ifndef liste_h
#define liste_h
#include<stdio.h>
#include<stdlib.h>
 
 
struct elem {     char alpha;
                  char *morse;
                  struct elem* suiv;
              };
 
typedef struct elem element;
typedef struct elem* liste;
 
 
#endif
Les fonctions pour connaitre les valeurs de la liste

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
char alphaValeur(liste l)
{
return l->alpha;
}
char morseValeur(liste l)
{
return l->morse;
}
Celle pour construire ma liste

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
liste cons(char a,char *m,liste l)
{
 
liste p;
p=(liste)malloc(sizeof(element));
p->alpha=a;
//strcpy(p->morse,m);
p->morse=*m;
p->suiv=l;
return p;
}
Et celle pour l'afficher:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
void afficheliste(liste l) 
{
liste p=l;
while(p)
{
printf("(%c,%c) ",alphaValeur(p),morseValeur(p));
p=reste(p);
}
printf("\n");
}
Voila le souci c'est que je n'ai pas le code morse complet, seulement la premiere lettre.
J'ai deja essayé de mettre un "%s" dans la fonction d'affichage mais le programme plante, une "*" dans la fonction qui me retourne le code morse mais le programme plante.

Je ne trouve pas de solutions si vous pouviez me donner un coup de pouce ça serait plutot cool.

Voici au passage ma procedure qui lit mon fichier texte:

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
 
 
void essai2()
{
     FILE* fichier = NULL;
    fichier = fopen("txtMorse.txt", "r");
    char alpha;
    char *morse=NULL;
    char chaine[TAILLE_MAX] = "";
    liste l=NULL;
    int index;
 
 
    if (fichier != NULL)
    {
        while (fgets(chaine, TAILLE_MAX, fichier)!= NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
        {
            alpha=chaine[0];
            printf("%c",alpha); 
            morse=strpbrk(chaine,".-");
            printf("%s\n",morse);
            l=cons(alpha,morse,l);
 
        }
    }
     fclose(fichier); // On ferme le fichier qui a été ouvert 
 
     afficheliste(l);       
}
Merci d'avance.