C 言語 | 配列 | 文字列

文字列を変数へ保存する方法を説明する。文字列は文字の配列であり、char 型の配列で管理できる。

文字列を変数へ保存する

C 言語には文字列専用の型がない。文字列は連続する文字コードであるため、配列を使って表現する。

コード 1

#include <stdio.h>

int main() {
 char chStr[6];
 int iCount;

 chStr[0] = 'K';
 chStr[1] = 'i';
 chStr[2] = 't';
 chStr[3] = 't';
 chStr[4] = 'y';
 chStr[5] = '\n';

 for(iCount = 0 ; iCount < 6 ; iCount++)
   printf("%c" , chStr[iCount]);
 return 0;
}

コード 1 は各要素へ 1 文字ずつ格納し、順番に表示する。この方法でも動作するが、文字数を管理する必要がある。

C 言語の文字列では、末尾に値 0 のバイトを置くことでこの問題を解決する。

コード 2

#include <stdio.h>

int main() {
 char chStr[7];
 int iCount;

 chStr[0] = 'K';
 chStr[1] = 'i';
 chStr[2] = 't';
 chStr[3] = 't';
 chStr[4] = 'y';
 chStr[5] = '\n';
 chStr[6] = 0;

 for(iCount = 0 ; chStr[iCount] ; iCount++)
   printf("%c" , chStr[iCount]);
 return 0;
}

末尾の 0 をヌル文字と呼ぶ。標準 C 関数も同じ規則を使う。たとえば文字列リテラル "Kitty" は、5 文字とヌル文字を合わせた 6 要素で保存される。

printf()%s を指定すると、文字配列をヌル文字まで表示できる。

コード 3

#include <stdio.h>

int main() {
 char chStr[7];

 chStr[0] = 'K';
 chStr[1] = 'i';
 chStr[2] = 't';
 chStr[3] = 't';
 chStr[4] = 'y';
 chStr[5] = '\n';
 chStr[6] = 0;

 printf("%s : %s" , "Kitty" , chStr);
 return 0;
}

printf()chStr を渡すときは、インデックスを付けずに配列名だけを指定する。配列名は配列の先頭、より正確には最初の要素のアドレスを表す。配列とポインターは密接に関係している。