[C] - Erreur de segmentation

Résolu
Bonjour,

J'aurais besoin de votre aide pour le tuto sur le C du SDZ.
Je suis au chapitre 13 sur les chaînes de caractères, au moment ou l'on fait une sorte de fonction strlen.

J 'ai fait le code et lors de la compilation à la ligne du while (l.27) cette erreur apparaît :
attention : constante caractère multi-caractères [-Wmultichar]
Et lorsque je relance une deuxième compilation sans rien changer la console s'ouvre et écrit : Segmentation fault.

Voici le code :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int lngChaine(const char* chaine);

int main(int argc, char *argv[])
{
char chaine[] = "Salut";
int longueur = 0;

longueur = lngChaine(chaine);
printf("La chaine \"%s\" fait %d caractères de long", chaine, longueur);

return 0;
}

int lngChaine(const char* chaine)
{
int nbrCara = 0;
char caraActuel = 0;

do
{
caraActuel = chaine[nbrCara];
nbrCara++;
}while(caraActuel != '/0');

return nbrCara--;
}

En espérant trouver une réponse au problème.

Cordialement.

4 réponses

  1. Remplace
      printf("La chaine \"%s\" fait %d caractères de long", chaine, longueur);
    par
      printf("La chaine \"%s\" fait %d caracteres de long", chaine, longueur);
    Et tout ira mieux.
    Bonne continuation?
    0
    1. Remplace
      
        printf("La chaine \"%s\" fait %d caractères de long", chaine, longueur);
      
      par
      
        printf("La chaine \"%s\" fait %d caracteres de long", chaine, longueur);


      Le problème n'est pas là, je suis sous linux (oublié de le préciser) donc les caractères spéciaux en console ca passe.
      0
      1. Contributeur
        hello
        \0, pas /0
        } while(caraActuel != '\0');
        0
        1. Merci bien dubcek, ca marche !
          0
      2. Contributeur
        Bonjour,

        En plus du \0, je rajouterai que :
        return nbrCara--;
        Cela est équivalent à return nbrCara; dans votre cas.
        Peut-être que vous vouliez mettre : return --nbrCar; ? ou plus simplement return nbrCar - 1; (plus propre et économie d'une affectation).
        Cdlt,

        Google is your friend
        0
        1. Merci, c'est vrai qu'une fois changé sa fonctionne encore mieux.
          0