プログラミングを行うにあたっての重要なポイントの一つは、数値と文字列をどのように扱うか、です。

前回のC 言語超入門(第14回)では、主に数値を取り扱う変数のデータ型についてお伝えしました。

今回のC言語超入門では、変数の配列表現と文字列の使用方法について学んでいきましょう。

配列の表現方法

配列とは同じデータ型を集めたもので、C言語では次のように変数を宣言します。

   int       hairetsu[10];

 

この例では、int型の変数 hairetsu を10個使用する宣言しています。

このとき注意してほしいことは、「配列の要素は 0 から始まる」ということです。

つまり、

 hairetsu[10] = 10;

 

という記述はできない、ということです。

10個の変数を宣言していますので、つい上記のように記述をしてしまいがちですが、もしこのように記述をしてプログラムを実行しますと、プログラムが異常終了してしまいます。

10個の配列を宣言した変数の場合、実際に使用できるのは以下のとおりです。

 hairetsu[0] = 1;
 hairetsu[1] = 2;
 hairetsu[2] = 3;
 hairetsu[3] = 4;
 hairetsu[4] = 5;
 hairetsu[5] = 6;
 hairetsu[6] = 7;
 hairetsu[7] = 8;  
 hairetsu[8] = 9;
 hairetsu[9] = 10;

 

文字列はchar型変数の配列で表現する

C言語には文字列を表現する変数が実装されていません。

ですからC言語で文字列を表現するためには、char型変数の配列(以降、「文字配列」といいます。)を使います。

「※プログラム1」は、文字配列 mojiretsu[10] に、”Windows”という文字列を設定し、出力するプログラムです。

※プログラム1

#include <stdio.h>
main() {
     char mojiretsu[10];
     sprintf(mojiretsu, "Windows");
     printf("%s\n", mojiretsu);
}

 

※プログラム1の実行結果 Windows 「※プログラム1」で使用しているsprintf関数は、文字配列に文字を書き込む関数です。

この例では、ダブルクォーテーションでくくった Windows という文字列を、文字配列 mojiretsu に書き込んでいます。

なおsprintf関数については別途改めて説明いたしますので、ここでは、文字配列に文字列を書き込む関数だと理解して頂ければ十分です。

文字列の取り扱い

C言語において、文字列がどのように内部的に取り扱われているのかを説明いたします。

「※プログラム1」で、文字配列 mojiretsu には、次のようにデータが格納されます。

 mojiretsu[0] ・・・ 'W'
 mojiretsu[1] ・・・ 'i'
 mojiretsu[2] ・・・ 'n'
 mojiretsu[3] ・・・ 'd'
 mojiretsu[4] ・・・ 'o'
 mojiretsu[5] ・・・ 'w'
 mojiretsu[6] ・・・ 's'  
 mojiretsu[7] ・・・ 0

 

mojiretsu[7]に、0 が格納されることがポイントです。

C言語では、0(NULL文字と言います。)を使って文字列の終端を表します。

配列サイズに注意する

文字配列に文字列を格納するときに気を付けてほしいことは、文字配列のサイズです。

格納したい文字列の長さより多くの文字配列のサイズを確保しておきませんと、プログラムが異常終了してしまいます。

なぜかと言いますと、例えば sprintf関数で以下のように文字列を入れたとしましょう。

 char mojiretsu[10];
 sprintf(mojiretsu, "Windows Server 2016");

 

文字配列 mojiretsu は10文字分しか確保されていません。

そのため、10文字を超えた分の文字は配列外のエリアに書き込まれてしまうのです。

C言語では、文字配列のサイズを超えた文字列を書き込みすることができてしまいます。

ですから、C言語で文字列を扱うときには、配列サイズを十分な大きさで確保しておく必要があります。

配列サイズを常に意識してプログラミングしましょう。

C言語超入門の第15回まとめ

さて、今回のC言語超入門では、変数の配列表現と文字配列について学びました。

ポイントを整理しますと、

1.配列の要素番号は0から始まる
2.文字列はchar型配列を使う
3.配列サイズはプログラマーが意識する

の3つです。

さて変数についてはこれまでに、データ型や配列、文字列の扱いについて学んできましたが、もう一つ大切なことがあります。

それは「変数の初期化について」です。

次回のC言語超入門では、変数の初期化についてお伝えいたします。

ステップ・バイ・ステップ。焦らず一歩ずつ進んでいきましょう。