回答編集履歴

2

語句修正

2018/10/24 16:28

投稿

rubato6809
rubato6809

スコア1380

test CHANGED
@@ -32,4 +32,4 @@
32
32
 
33
33
  上に書いた通り、c[0] 〜 c[4] に終端文字 '\0' が無くても、続くメモリのどこかに '\0' は見つかります。即ち、終端文字はどこかに存在します。
34
34
 
35
- そもそも、終端文字を見つけるのは「コンピュータ」ではありません。printf()という関数です。そして、printf("%s", 〜) は表示する文字列・配列の長さに関係なく動作する仕様です。大きさ5の配列 c[5] を渡しても1文字しか表示しない場合もあれば10文字でも20文字でも表示してしまうことがある、という事実を貴方は体験したのです。そして、それは間違いでも何でもない、仕様通りの動作をしているのです。
35
+ そもそも、終端文字を見つけるのは「コンピュータ」ではありません。printf()という関数です。そして、printf("%s", 〜) は表示する配列の長さに関係なく動作します。大きさ5の配列を渡しても1文字しか表示しない場合もあれば10文字でも20文字でも表示してしまうことがある、という事実を貴方は確認したのです。そして、それは間違いでも何でもない、printf() は仕様通りの動作をしているのです。

1

追記

2018/10/24 16:28

投稿

rubato6809
rubato6809

スコア1380

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文字でも表示してしまうことがある、という事実を貴方は体験したのです。そして、それは間違いでも何でもない、仕様通りの動作をしているのです。