C言語では、文字列は文字型の配列です。

 

<コンピュータが扱う「文字」>

 

 それぞれの文字に対応する数値(文字コード)が割り当てられています。コンピュータが処理するのは「文字」ではなく、あくまで「数値」です。文字コードは、「ある数値をどの文字として表示するか」「キーボードで押された文字をどんな数値に変換するか」という、対応表みたいなものです。

 

(例)   char ch1 = 'A'; // ch1にはAをあらわす数値(0x41)が入っている

         char ch2 = 'B'; // ch2にはBをあらわす数値(0x42)が入っている

 

ASCIIコード>

 

 半角英数字をあらわす1バイトコード(0~255, 0x00~0xFF)をASCIIコードといいます。

ASCIIコード表はこちら  

 

<文字列データと配列>

 

 二重引用符""で囲まれた0文字以上の文字の列は「文字列データ」として扱われます。

 

 文字列データは文字型の配列に格納します。

 

(例)   char str[5] = "ABC";

         // 要素数5の文字型配列を用意し文字列"ABC"を格納

         //      配列の要素        中身の文字

         //      str[0]          'A'

         //      str[1]          'B'

         //      str[2]          'C'

         //      str[3]          '\0'

         //      str[4]          '\0'

 

<終了コード'\0'

 

 C言語の文字列の終わりには、終わりを示す文字コード(ヌル文字)をつけます。値は0です。""で囲んで文字列をあらわす場合には、コンパイラが最後に'\0'を付加します。逆に,文字型配列中に'\0'があるとそこで文字列が終わりと判断されます。 

 

 文字列の長さには終了コード'\0'は含めません。

 

(例)   文字列"ABC"は長さ3

         文字列""は長さ0 

 

<文字配列の初期化>

 

方法1.初期化リストを{}で囲む.'\0'を忘れずに.

 

(例)   char str1[10]={'H','E','L','L','O','\0'};

         char str2[]={'H','E','L','L','O','\0'};

 

方法2""を使う.'\0'はコンパイラが付加してくれる.

 

(例)   char str1[10]="HELLO";

         char str2[]="HELLO";

 

<文字配列を扱う場合の注意点>

 

1. 配列の要素数には'\0'も含める必要があります。

 

(例)   char str1[2]="ABC"     //コンパイルエラー

         char str2[3]="ABC"     //コンパイルエラーは出ないが

                                  //'\0'が付加されないので

                                  //終了コードがない文字列になってしまう

 

2. 初期化子が与えられるのは宣言時のみです。

 

(例) char str[10];

         str = "ABC";            // エラー

 

3. ""で囲んだ文字列は連結可能です。

 

(例)   char str[] =   "ABCDEFG"

                          "HIJKLMN";

 

 

戻る