メイン画像

C言語 - 文字列なんてない。文字型の配列を使うのだ

C言語 - 文字列なんてない。文字型の配列を使うのだ


C言語には文字列を表すデータ型はない。

代わりに文字型の配列を使って文字列を扱う。
また文字列の終端はNULL文字(¥0)で表す。

文字は char 型で扱う。

char char1 = 'A';

文字列は char 型の配列で扱う。

以下のように配列を宣言して、各要素に文字を入れる。
文字列の終端にはNULL文字を入れること。

char string1[10];

string1[0] = 'H';
string1[1] = 'e';
string1[2] = 'l';
string1[3] = 'l';
string1[4] = 'o';
string1[5] = '\0';

printf("%s\n", string1);

宣言と設定を同時に行うこともできる。

この場合は設定した文字数+NULL文字分のサイズが自動で割り当てられる。

たとえば “Hello” を設定した場合、 “Hello” の6文字と末尾のNULL文字の計7文字の配列となる。
変数に入れるとき、終端のNULL文字は自動設定される。

char string2[] = "Hello";

printf("%s\n", string2);

宣言後に strcpy() で文字列をコピーする手もある。

このときも終端のNULL文字は自動設定される。

char string3[10];
strcpy(string3, "Hello");

printf("%s\n", string3);

strcpy 関数を使うとき、オーバーフローしないように注意する。

コピーする文字列の長さがコピー先のサイズより大きい場合、オーバーフローとなる。

たとえば上記の場合、 string3 の要素数 10 からNULL文字の数を引いた 9 より長い文字列をコピーするとオーバーフローしてしまう。


アカウントを作成 して、もっと沢山の記事を読みませんか?


この記事が気に入ったら ことりと さんを応援しませんか?
メッセージを添えてチップを送ることができます。


この記事にコメントをしてみませんか?


酒とアクアリウムが最近の楽しみ。

おすすめの記事