Caractères bizarres à l'affichage [Résolu]

Signaler
Messages postés
42
Date d'inscription
lundi 5 avril 2021
Statut
Membre
Dernière intervention
3 juin 2021
-
Messages postés
42
Date d'inscription
lundi 5 avril 2021
Statut
Membre
Dernière intervention
3 juin 2021
-
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 ?

2 réponses

Messages postés
5575
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
10 juin 2021
937
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
Messages postés
42
Date d'inscription
lundi 5 avril 2021
Statut
Membre
Dernière intervention
3 juin 2021
4
Ah ouiii, merci ! Je l'oublie tout le temps ce fameux caractère sentinelle !