Caractères bizarres à l'affichage

Résolu
Unnamed_Man Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -  
Unnamed_Man Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -
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 ?
A voir également:

2 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 104
 
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
Unnamed_Man Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   5
 
Ah ouiii, merci ! Je l'oublie tout le temps ce fameux caractère sentinelle !
0