teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

語句修正

2018/10/24 16:28

投稿

rubato6809
rubato6809

スコア1382

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

1

追記

2018/10/24 16:28

投稿

rubato6809
rubato6809

スコア1382

answer CHANGED
@@ -9,4 +9,10 @@
9
9
  > hello\366\277\357\376
10
10
  > と出力されました。
11
11
 
12
- '\0' が現れるまでのメモリに、たまたま「\366\277\357\376」と表示される値のメモリが続いていたのです。
12
+ '\0' が現れるまでのメモリに、たまたま「\366\277\357\376」と表示される値のメモリが続いていたのです。
13
+
14
+ 追記します。
15
+ > 終端文字がない場合、コンピュータはどうやって配列の終了を認識しているのでしょうか?
16
+
17
+ 上に書いた通り、c[0] 〜 c[4] に終端文字 '\0' が無くても、続くメモリのどこかに '\0' は見つかります。即ち、終端文字はどこかに存在します。
18
+ そもそも、終端文字を見つけるのは「コンピュータ」ではありません。printf()という関数です。そして、printf("%s", 〜) は表示する文字列・配列の長さに関係なく動作する仕様です。大きさ5の配列 c[5] を渡しても1文字しか表示しない場合もあれば10文字でも20文字でも表示してしまうことがある、という事実を貴方は体験したのです。そして、それは間違いでも何でもない、仕様通りの動作をしているのです。