文字を変数で表現する方法はわかりました。
では、どうすれば文字列を変数で扱えるのでしょうか?
実は文字型変数の配列を利用します。
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]のヌル文字に何か別の文字を上書きして、コンピュータに文字列の表示命令をだすと、
コンピュータはどこまで表示していいのかわからずに、配列の範囲を超えてデータを見に行ってしまう事態が発生してしまうのです。