Caractères bizarres à l'affichage

Résolu
Unnamed_Man Messages postés 47 Statut Membre -  
Unnamed_Man Messages postés 47 Statut Membre -
Bonjour,

Voici mon code :

char table[5];

for (int i = 0; i < 5; i++)
{
table[i] = '-';
}

printf("%s", table);

Voici le résultat :

-----♣

Je ne comprends pas pourquoi quand j'exécute un code similaire je retrouve toujours des caractères bizarres à la fin. Quelqu'un peut m'éclairer svp ?

--
N'oubliez pas de mettre le sujet en "résolu" lorsqu'il l'est et un petit "merci" fait toujours plaisir ;-)

2 réponses

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Bonjour,

    En C, une chaîne de caractère est une suite de char terminée par le caractère '\0'.

    Comme tu n'as pas terminé ta chaîne, printf tente d'afficher des caractères à la suite de l'espace mémoire réservé à ton tableau de char en dépassant cet espace, c'est à dire n'importe quoi et s'arrête lorsqu'il trouve par hasard 0 en mémoire.

    Un type
    char table[5];
    permet de stocker une chaîne d'un maximum de 4 chars, le 5ème emplacement devant être disponible pour terminer la chaîne.

    Ton code devait être :

    char table[5];
    
    for (int i = 0; i < 4; i++) {
        table[i] = '-';
    }
    table[4] = '\0';
    printf("%s\n", table); 


    Pour afficher :

    ----


    Dal
    0
  2. Unnamed_Man Messages postés 47 Statut Membre 5
     
    Ah ouiii, merci ! Je l'oublie tout le temps ce fameux caractère sentinelle !
    0