Probleme C caratére en plus :/

Résolu/Fermé
lirycs78 Messages postés 103 Date d'inscription vendredi 7 juillet 2006 Statut Membre Dernière intervention 7 janvier 2010 - 7 mars 2009 à 18:04
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 8 mars 2009 à 11:13
Bonjour,

Voici le code : http://rafb.net/p/ajAZ4o56.html

Mon probléme se situe au moment ou il doit conter le nombre de cellule que contient le tableau : " nb = strlen(tableau); " Il en trouve 9 alors qu'il n'y en a que 7, quand j'execute le code deux caratére se rajoute : ⌂§
Et je ne sais pas pourquoi.

Aider moi svp, Merci
A voir également:

7 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
7 mars 2009 à 18:22
Salut,

Je mettrais plutôt
void camoufle_mot_mystere(){
    int i;
    char camoufle[8];//de 0 à 6 = 7 case + une case pour '\0'

    for(i = 0; i < 7; i++){
        camoufle[i] = '*';
    }
    camoufle[i]='\0';
    affiche_tableau(camoufle);
}

0
lirycs78 Messages postés 103 Date d'inscription vendredi 7 juillet 2006 Statut Membre Dernière intervention 7 janvier 2010 1
7 mars 2009 à 18:35
Merci bien lami20j

Pourrait tu m'expliquer : camoufle[i]='\0';

Car si je comprend bien tu ajoute ce caractére pour dire que c'est la fin de la chaine c'est sa ?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
7 mars 2009 à 18:38
Re,

Oui.

Le tableau commence à l'indice 0.
Dans la case 0 tu mets un *
Dans la case 1 tu mets un *
.
.
Dans la case 6 tu mets un *

Ca fait 7 case donc i=0;i<7
Pour i=7, la 8ème case tu mets le caractère de fin de chaîne '\0'
En sortant de la boucle i est égal à 7.
0
lirycs78 Messages postés 103 Date d'inscription vendredi 7 juillet 2006 Statut Membre Dernière intervention 7 janvier 2010 1
7 mars 2009 à 18:39
Ok merci beaucoup :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lirycs78 Messages postés 103 Date d'inscription vendredi 7 juillet 2006 Statut Membre Dernière intervention 7 janvier 2010 1
7 mars 2009 à 18:46
Juste je penser que quand on initialiser un tableau la machine rajouter automatiquement '\0' a la fin de la chaine ?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
7 mars 2009 à 18:51
Re,

Juste je penser que quand on initialiser un tableau la machine rajouter
Oui, mais tu ne l'initialises pas à la déclaration ;-)

Tu aurais du mettre par exemple
char string[]="*******";

Mais faire une fonction pour ça, je ne vois pas l'intérêt
void camoufle_mot_mystere(){
    char camoufle[]="*******";
    affiche_tableau(camoufle);
}
ou encore (même pas besoin de déclarer une variable)
void camoufle_mot_mystere(){
    affiche_tableau("*******");
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
8 mars 2009 à 11:13
Salut,
Juste pour mentionner la fonction memset :

for(i = 0; i < 7; i++){
        camoufle[i] = '*';
}
camoufle[8]='\0';

peut être remplacé par :
memset(camoufle,'*',sizeof camoufle - 1);
camoufle[sizeof camoufle - 1] = '\0';

Cdlt
0