Probleme C caratére en plus :/

Résolu
lirycs78 Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Membre Dernière intervention   1
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Contributeur Dernière intervention   1 846
 
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