文字を変数で表現する方法はわかりました。

では、どうすれば文字列を変数で扱えるのでしょうか?


実は文字型変数の配列を利用します。


char string[ 10 ];


とすれば、10文字までの文字列を扱える変数 string を定義したことになります。

しかし、9文字目までしか文字を入れることは出来ないのです。


10文字文確保したのに、何故9文字しか格納できないのか?

それには、プログラムが文字列の認識の方法による仕様です。


たとえば、下記のように string 変数に 『abc』 という文字列を代入したとします。


char string[10] = "abc";


すると、下記のようにデータは保存されます。

string[0] には 'a'

string[1] には 'b'

string[2] には 'c'

string[3] には '\0'

string[4] ~ string[9] には何が入ってるのかはわかりません。


はてさて、 string[3] の 『\0』 とは何でしょうか?

これは null文字(ヌル文字)と呼ばれる文字で、文字列の終端を表しています。


つまり、コンピュータは 文字列を表示しろ。という命令がくると、

「配列を1つずつ読み込んで 『\0』 が出てくるまで表示する。」


というような処理をしているのです。

よって、string[3]のヌル文字に何か別の文字を上書きして、コンピュータに文字列の表示命令をだすと、

コンピュータはどこまで表示していいのかわからずに、配列の範囲を超えてデータを見に行ってしまう事態が発生してしまうのです。