- Parceque tes tableaux étant déclarés l'un à la suite de l'autre, sont alloués l'un à la suite de l'autre par le compilateur.
- Cela implique que, comme tes tableaux ne peuvent contenir que 7 octets, le 8ème caractère écrit par
fgets (le zéro de fin -que tu oubliais-) est en fait placé dans le premier élément du buffer (tableau) suivant.
- Il est important de comprendre pour suivre, donc relis les points précédents si tu as du mal, avant de poursuivre :
- dans ton code, tu remplis d'abord
s1. Le zéro terminal va donc être écrit dans le premier élément du buffer suivant :
s2
- ensuite, tu remplis
n1. Heureusement que tu le fait avant
s2, tu va comprendre pourquoi
- puis tu rempli
s2, son zéro va être placé dans son 8ème élément... qui n'existe pas, et qui correspond en fait au premier élément de
n1.
-
n1 a déjà été rempli, tu n'y touches plus, donc le zéro qui vient d'être placé dans son premier élément ne va pas être effacé.
=>
s2 se termine bien par un zéro, contrairement à
s1 dont le zéro a été écrasé par le remplissage
s2.
[edit]Edité par Thibaut le 01-03-2002 à 22:09:29[/edit]