Caractères bizarres à l'affichage

Résolu/Fermé
Unnamed_Man Messages postés 42 Date d'inscription lundi 5 avril 2021 Statut Membre Dernière intervention 12 juin 2021 - 28 mai 2021 à 20:20
Unnamed_Man Messages postés 42 Date d'inscription lundi 5 avril 2021 Statut Membre Dernière intervention 12 juin 2021 - 29 mai 2021 à 19:28
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

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié le 28 mai 2021 à 21:23
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 lundi 5 avril 2021 Statut Membre Dernière intervention 12 juin 2021 5
29 mai 2021 à 19:28
Ah ouiii, merci ! Je l'oublie tout le temps ce fameux caractère sentinelle !
0