Caractères supplémentaires ajoutés à la fin de la chaîne en c

J’essaie donc d’imprimer une chaîne en C et j’obtiens régulièrement des caractères supplémentaires à la fin de la chaîne lorsque je l’imprime. Le code:

char binaryNumber[16] = "1111000011110000"; printf("binary integer: %s\n", binaryNumber); 

Sortie:

entier binary: 1111000011110000▒▒▒▒

pouvez-vous s’il vous plaît m’aider à comprendre pourquoi cela se produit. Je pense que ceci est la racine de quelques autres problèmes dans mon code. J’ai déjà eu ce problème auparavant lorsque je créais la chaîne d’une manière plus complexe. Dans ce cas également, j’ai eu des caractères supplémentaires, mais ils étaient différents. J’ai donc créé une chaîne de la manière la plus élémentaire possible (méthode illustrée ici) et le problème persiste.

CA devrait etre

 char binaryNumber[17] = "1111000011110000"; 

Cela est dû au fait que les chaînes en C sont terminées par zéro. Donc, vous allez lire des ordures si vous ne donnez pas un espace de caractère supplémentaire pour le \0 implicite qui sera ajouté

Laissez le compilateur déterminer la quantité d’éléments nécessaires

 char binaryNumber[] = "1111000011110000"; // same as // char binaryNumber[17] = "1111000011110000"; 

Vous avez 16 caractères dans votre tableau. et il n’y a pas de place pour tenir un caractère \0 .

%s affiche une chaîne jusqu’à ce qu’il rencontre un \0

Vous voyez donc des caractères illisibles en train d’être imprimés.Veuillez faire en sorte que votre chaîne soit \0 terminée