Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

文字列とは何か?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型の配列 + 終端のヌル文字」というシンプルな仕組みで成り立っています。宣言・初期化の基本を押さえておけば、文字列操作関数(strlenstrcpy など)の理解にも役立ちます。

  1. 【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文字を格納できる文字列が宣言できます。文字列の

  2. C言語のstrcmp()関数とは?文字列比較の基本と使い方を徹底解説

    C言語の標準ライブラリ関数 int strcmp(const char *str1, const char *str2) は、ポインタ str1 が指し示す文字列と、str2 が指し示す文字列を比較するための関数です。C言語において、文字型の配列は「文字列」と呼ばれます。まずは文字列の基本的な扱い方から確認していきましょう。文字列の宣言文字列(文字配列)の宣言は以下のように行います。char stringname [size];例えば、char string[50]; と宣言すれば、最大50文字の長さを持つ文字列を格納できます。文字列の初期化文字列の初期化には、主に次の2つの方法があります。1