回答編集履歴
1
バグの修正
answer
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
説明が難しい質問です。環境によっても結果が変わると思います。
|
2
2
|
printf関数の実行前に、number2 = '9';という一行を追加してみてください。多分、543219のように表示されると思います。つまり、number2に代入した文字が表示されてしまうわけです。原因は、number1の要素数です。5桁の整数だから5文字で足りる、そう思うかもしれません。しかし、printf関数で表示する場合は異なります。printf関数の%s指定は、ヌル文字に出会うまでずっと、(配列のメモリ領域を超えても)文字を表示し続ける仕様になっています。今回は、number1の領域の直後にnumber2の領域があり、そのあとヌル文字が入っていたため、6文字が出力されたのです。
|
3
|
-
直し方は簡単で、配列の大きさを6文字分にするか、%s指定をやめて、%
|
3
|
+
直し方は簡単で、配列の大きさを6文字分にするか、%s指定をやめて、%.5sのように最大文字数を指定すればよいです。
|