auの日記

プログラミング初心者の日記。(auはハンドルネームです)

C言語で文字列の扱い方②

auです。
前回は1バイトの1文字の場合のchar型の扱い方について書きました。
1バイトの文字は1~9, a~Z, -^\などの半角の文字をいうので、"あいうえお"などの日本語は2バイトになります。
program-shoshinsya.hatenablog.com
今回は複数の文字の場合のchar型の使い方について書きたいと思います。

char型で複数の文字を配列で表示する

前回は"a"という、1文字のみの表示の仕方について書きました。しかし、1文字だけでは何かと不便です。そこで、今回は5文字の"Hello"を表示したいと思います。
書き方は以下の通りです。

char 配列名[文字列の大きさ] = "文字列";

まず、char型を宣言して、その後ろに配列名を書き、その後ろに自分の表示したい文字を書きます。その際""(ダブルクォーテーション)で囲んでください。
実際に書いてみます。

#include<stdio.h>

int main(void) {
    char hello[] = "Hello";
    printf("%s\n", hello);
    return 0;
}
// 実行結果
Hello

または....

#include<stdio.h>

int main(void) {
    char hello[6] = "Hello";
    printf("%s\n", hello);
    return 0;
}
// 実行結果
Hello

この際、"文字列の大きさ"に当たる部分は「空欄」または「文字列+1」(Helloの場合は6)で入力してください。
なぜかというと、hello[5]で"Hello"は5文字なので大丈夫!と思うのですが、最後に"\n"というnull文字が入っていて、これは「ここで文字列は終わりだよー」という意味になり、これがないと終了の判断ができなくなってしまい、プログラムの結果がうまくでない場合もあるのです。つまり、この場合は"Hello\n"となってます。
1文字の場合の変換指定子は"%c"でしたが、文字列では"%s"となります。