[C] - Erreur de segmentation [Résolu/Fermé]

Signaler
Messages postés
5
Date d'inscription
samedi 17 décembre 2011
Statut
Membre
Dernière intervention
17 décembre 2011
-
Messages postés
5
Date d'inscription
samedi 17 décembre 2011
Statut
Membre
Dernière intervention
17 décembre 2011
-
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

Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
140
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?
Messages postés
5
Date d'inscription
samedi 17 décembre 2011
Statut
Membre
Dernière intervention
17 décembre 2011

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.
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 251
hello
\0, pas /0
} while(caraActuel != '\0');
Messages postés
5
Date d'inscription
samedi 17 décembre 2011
Statut
Membre
Dernière intervention
17 décembre 2011

Merci bien dubcek, ca marche !
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 750
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
Messages postés
5
Date d'inscription
samedi 17 décembre 2011
Statut
Membre
Dernière intervention
17 décembre 2011

Merci, c'est vrai qu'une fois changé sa fonctionne encore mieux.