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:
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
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
Celle pour construire ma 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; }
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
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; }
Voila le souci c'est que je n'ai pas le code morse complet, seulement la premiere lettre.
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"); }
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:
Merci d'avance.
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); }
Partager