Bonjour tout le monde ! Une question me trotte dans la tête : pourquoi est-ce que ce code marche alors que je n'ai pa indiqué la longueur de ma chaîne de caractères ni ajouté de '\0' a la fin, le programme devrait planter non ??
Moi j'ai une explication : non ce n'est pas le compilateur qui fait ça automatiquement.
En fait, tu as juste du BOL. Il se trouve que *(chaine + 5) contient la valeur 0. Donc le pc s'arrête là.
Dans ce cas ça marche parce que t'as du bol, dans d'autres cas ça ne marchera pas (peut-être qu'au reboot de ton pc ça ne marchera plus).
Bref t'as juste du bol, en temps normal ça devrait soit t'afficher n'importe quoi, soit faire planter ton programme. Ni l'un ni l'autre ne sont bons.
De toute façon, puisque c'est un coup de chance, te poses pas de questions et n'écris jamais ça
Sinon pour les autres : il a créé un tableau, mais l'OS ne connaît pas en permanence la taille d'un tableau, elle n'est pas "écrite" en mémoire à côté du tableau, d'où l'utilité du \0 qui indique la fin. Ici, le programme pourrait bien afficher des caractères en plus jusqu'à ce qu'il trouve un \0 dans la mémoire. Un \0 n'est ajouté automatiquement que quand on écrit une constante chaîne, c'est à dire une chaîne entre "".
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
If you'd like to join us, read "How do we work at OpenClassrooms"! :)