Bonjour
J'ai essayé ce matin d'écrire une fonction qui inverse une chaine de caractères en utilisant une pile (LIFO). 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
 
void inverser(char **s)
{
    Pile *p;
    char *aux;
    int i;
 
    pile_vide(&p); 
    aux = *s;
    while(*aux)
    {
        empiler(&p, *aux);
        aux++;
    }
 
    i = 0;
    while(!est_vide(p))
    {
        * (*s + i) = depiler(&p);
        i++;
    }
    * (*s + i) = '\0';
}
Mon code compile mais il génère une erreur de segmentation. Après quelques tentatives de déboguage "manuel" (des printf partout ) j'ai pu déduire que l'erreur vient de cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
* (*s + i) = depiler(&p);
mais je ne vois pas ce que j'ai fait de mal (bon disons que le langage C et moi, ça fait 2)

(je peut vous donner le code des fonctions de manipulation de la pile si vous voulez, mais je suis sur à 99% que l'erreur ne vient pas de là).

Cordialement, Gotoma.