文字列とは何か?C言語での文字列の宣言と初期化方法を徹底解説
C言語における文字列(string)とは、複数の文字を並べた「文字の配列」、すなわち文字の集合体のことです。C言語には文字列型という専用のデータ型が存在しないため、char型の配列として文字列を扱います。
文字列の宣言
文字列は、以下の形式で宣言します。
char 文字列名 [サイズ];
たとえば char a[50]; と記述すると、最大50文字まで格納できる文字列が定義されます。なお、終端を表すヌル文字('\0')のぶんも領域が必要なため、実際に格納できるのは「サイズ − 1」文字である点に注意しましょう。
文字列の初期化
文字列の初期化には、主に次の2つの方法があります。
1. 単一文字定数を使う方法
1文字ずつ要素として指定し、波括弧 { } で囲んで初期化します。
char string[20] = { 'H', 'e', 'l', 'l', 'o', '\0' };
2. 文字列定数(文字列リテラル)を使う方法
ダブルクォートで囲んだ文字列をそのまま代入する、より簡潔な方法です。
char string[20] = "Hello";
ヌル文字 '\0' の役割
'\0'はヌル文字(NULL文字)と呼ばれ、文字列の終端を示す特別な文字です。"Hello"のように文字列リテラルで入力した場合、コンパイラが自動的に末尾へ'\0'を追加してくれます。- 一方、1文字ずつ個別に代入する場合は、プログラマ自身が必ず末尾に
'\0'を付ける必要があります。これを忘れると文字列の終端が検出できず、予期しない動作の原因となります。
文字列へのアクセス(表示)
printf 関数で文字列を表示する際は、制御文字列 "%s" を使用します。%s は、終端の '\0' を検出するまで文字を順番に出力します。
サンプルプログラム
以下は、文字列を宣言・初期化して画面に表示するCプログラムの例です。
#include <stdio.h>
int main(void) {
char a[10] = "Hello";
printf("与えられた文字列は %s です\n", a);
return 0;
}
実行結果
上記のプログラムを実行すると、次のような出力が得られます。
与えられた文字列は Hello です
このように、C言語の文字列は「char型の配列 + 終端のヌル文字」というシンプルな仕組みで成り立っています。宣言・初期化の基本を押さえておけば、文字列操作関数(strlen、strcpy など)の理解にも役立ちます。
-
【C言語】strncpy()関数とは?基本から実践的な使い方まで解説
strncpy()関数とはC言語の標準ライブラリ関数 char *strncpy(char *dest, const char *src, size_t n) は、srcが指す文字列からdestへ最大n文字をコピーする関数です。もしsrcの長さがnより短い場合は、コピー後のdestの残りの領域がヌルバイト(\0)で埋められます。なお、C言語において文字の配列は「文字列」と呼ばれます。文字列の宣言文字列(文字型配列)の宣言は以下のように行います。char stringname[サイズ];たとえば、char string[50];と記述すれば、最大50文字を格納できる文字列が宣言できます。文字列の
-
C言語のstrcmp()関数とは?文字列比較の基本と使い方を徹底解説
C言語の標準ライブラリ関数 int strcmp(const char *str1, const char *str2) は、ポインタ str1 が指し示す文字列と、str2 が指し示す文字列を比較するための関数です。C言語において、文字型の配列は「文字列」と呼ばれます。まずは文字列の基本的な扱い方から確認していきましょう。文字列の宣言文字列(文字配列)の宣言は以下のように行います。char stringname [size];例えば、char string[50]; と宣言すれば、最大50文字の長さを持つ文字列を格納できます。文字列の初期化文字列の初期化には、主に次の2つの方法があります。1