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";