[C] - Erreur de segmentation

Résolu
racou56 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
racou56 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
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

loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
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
racou56 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
\0, pas /0
} while(caraActuel != '\0');
0
racou56 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci bien dubcek, ca marche !
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
racou56 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci, c'est vrai qu'une fois changé sa fonctionne encore mieux.
0