Bonjour à tous,
Dans le cadre de mes études, j'ai a réaliser un petit projet en C d'outil de traduction basique Français - Morse.
Or, j'ai un petit soucis sur lequel je tourne en rond depuis un petit moment, et sur lequel mes recherches ont été infructueuses...

Voici le code :

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
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char *translate_f_to_m(char TexteFr[64]) /* Fonction de traduction */
{
        char Car[38]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','.',' '};
 
        char *table[38]={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".---","-..-","-.--","--..","-----","----","..---","...--","....-",".....","-....","--...","---.."," ----.",".-.-.-"," "};
 
        unsigned i;
        unsigned j;
        unsigned k;
        char *result[128];
 
        i=strlen(TexteFr);
 
        for(j=0;j<i;j++)
        {
                for (k=0;k<38;k++)
                {
                        if (TexteFr[j]==Car[k])
                        { 
                                result[j]=table[k]; /* Comparaison et stockage du résultat */
                                break;
                        }
                }
        }
 
        /* result[i]=NULL; */
 
        printf("1----------------\n"); /* Debuggage : affichage du résultat */
        for(j=0;j<i;j++)
        {
                printf("%s", result[j]);
                printf("|");
        }
        printf("\n-----------------\n");
        printf("\n");
 
        return *result;
}
 
 
int main()
{
        char p[64];
        unsigned k;
        unsigned l;
        char *result[128];
 
        printf ("phrase : ");
        printf ("\n");
        scanf("%s", p);
 
        l=strlen(p);
 
        *result=translate_f_to_m(p); /* Appel de la fonction */
 
        printf("2----------------\n"); /* Debuggage : affichage du résultat */        
        for(k=0;k<l;k++)
        {
                printf("%s", result[k]);
                printf("|");
        }
        printf("\n-----------------\n");
        printf("\n");
 
        return 0;
}
Donc, le soucis est que j'ai en résultat avec un mot au hasard (ex : bonjour)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
1----------------
-...|---|-.|.---|---|..-|.-.|
-----------------
 
2----------------
-...|(null)|(null)|(null)|(null)|(null)|(null)|
-----------------
et le second problème c'est que si je défini p et *result avec la même valeur (ex : p[64] et *result[64]) j'obtient :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
1----------------
-...|---|-.|.---|---|..-|.-.|
-----------------
 
2----------------
erreur de segmentation
Si jamais quelqu'un arrivait à m'aider...

Cordialement.