回答編集履歴
2
語句修正
test
CHANGED
@@ -32,4 +32,4 @@
|
|
32
32
|
|
33
33
|
上に書いた通り、c[0] 〜 c[4] に終端文字 '\0' が無くても、続くメモリのどこかに '\0' は見つかります。即ち、終端文字はどこかに存在します。
|
34
34
|
|
35
|
-
そもそも、終端文字を見つけるのは「コンピュータ」ではありません。printf()という関数です。そして、printf("%s", 〜) は表示する
|
35
|
+
そもそも、終端文字を見つけるのは「コンピュータ」ではありません。printf()という関数です。そして、printf("%s", 〜) は表示する配列の長さに関係なく動作します。大きさ5の配列を渡しても1文字しか表示しない場合もあれば10文字でも20文字でも表示してしまうことがある、という事実を貴方は確認したのです。そして、それは間違いでも何でもない、printf() は仕様通りの動作をしているのです。
|
1
追記
test
CHANGED
@@ -21,3 +21,15 @@
|
|
21
21
|
|
22
22
|
|
23
23
|
'\0' が現れるまでのメモリに、たまたま「\366\277\357\376」と表示される値のメモリが続いていたのです。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
追記します。
|
28
|
+
|
29
|
+
> 終端文字がない場合、コンピュータはどうやって配列の終了を認識しているのでしょうか?
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
上に書いた通り、c[0] 〜 c[4] に終端文字 '\0' が無くても、続くメモリのどこかに '\0' は見つかります。即ち、終端文字はどこかに存在します。
|
34
|
+
|
35
|
+
そもそも、終端文字を見つけるのは「コンピュータ」ではありません。printf()という関数です。そして、printf("%s", 〜) は表示する文字列・配列の長さに関係なく動作する仕様です。大きさ5の配列 c[5] を渡しても1文字しか表示しない場合もあれば10文字でも20文字でも表示してしまうことがある、という事実を貴方は体験したのです。そして、それは間違いでも何でもない、仕様通りの動作をしているのです。
|