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