コース一覧
    C言語基礎 関数・配列編
    文字列(char配列)

    C言語基礎 関数・配列編

    C言語の関数と配列を学び、処理を分割してデータを扱うコースです。

    1
    関数
    01. 関数を定義する15分
    02. 引数と戻り値15分
    03. プロトタイプ宣言15分
    04. void関数15分
    05. 変数のスコープ15分
    06. つくる 関数に分割15分
    07. 第5章クイズ10分
    2
    配列と文字列
    01. 配列15分
    02. 配列とfor15分
    03. 集計15分
    04. 最高点と最低点15分
    05. 文字列(char配列)15分
    06. 文字列関数15分
    07. 文字列の入力15分
    08. つくる 配列で成績管理15分
    09. 第6章クイズ10分

    文字列(char配列)

    C に文字列型はない

    ここまで扱ってきた点数は数値でしたが、成績管理には学生の名前も要ります。ところが C には、文字列を入れるための専用の型がありません。

    C の文字列は char の配列 です。1文字ぶんの型である char を並べて、そこに1文字ずつ入れます。

    c

    char name[20] = "Sato";
    printf("%s\n", name);   // Sato

    char name[20] は char を20個ぶん確保します。ダブルクォートで書いた "Sato" は、先頭から S, a, t, o と入れてくれます。表示は %s という書式で、配列の名前をそのまま渡します。

    なお、日本語の名前を char 配列に入れると、1文字が複数の char を使うため、文字数の数え方がややこしくなります。この章では名前をローマ字で扱います。

    終端記号 \0 が入っている

    "Sato" は4文字ですが、実際に使われる箱は5個です。4文字目の後ろに 終端記号 '\0' (ヌル文字) が自動で入るからです。

    プレーンテキスト

    添字   0    1    2    3    4     5 ...
    中身   S    a    t    o   \0    不明

    なぜこれが要るかというと、printf("%s", name) は「配列が何文字ぶん使われているか」を知らないからです。渡されるのは配列の先頭だけなので、printf は先頭から1文字ずつ出していき、'\0' に当たったところで止まります。この目印がないと、配列の外まで延々と出力し続けてしまいます。

    ですから、n 文字の名前を入れたいなら、配列は最低でも n + 1 個必要です。char name[4] = "Sato"; は終端記号のぶんが足りず、危険なコードになります。

    1文字ずつ取り出せる

    配列なので、添字で1文字ずつ触れます。1文字は char なので、書式は %c です。

    c

    printf("%c\n", name[0]);   // S
    name[0] = 'T';             // Tato に書き換わる

    1文字は 'S' のようにシングルクォートで、文字列は "Sato" のようにダブルクォートで書きます。似ていますが別物で、"S" は S と '\0' の2個ぶんの配列です。

    終端記号の性質を使うと、文字数も自分で数えられます。

    c

    int len = 0;
    while (name[len] != '\0') {
        len++;
    }

    '\0' に当たるまで添字を進めるだけです。次回学ぶ strlen も、中でやっていることはこれと同じです。

    では、名前を char 配列で持ってみましょう。

    要件

    1. char の配列 name に Sato を入れる
    2. 名前はSatoです の形で名前を表示する
    3. 1文字目はSです の形で先頭の1文字を表示する
    4. 文字数は4文字です の形で表示する。文字数は while で数える

    ヒント

    配列全体は %s、1文字は %c で表示します

    name[len] が '\0' でない間、len を増やしていきます

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/07

    関連レッスン

    • 文字列関数

      strlen と strcmp を使えるようになります。

    • 文字列の入力

      名前をあふれさせずに入力できるようになります。

    • つくる 配列で成績管理

      名前と点数を添字で対応付けて管理できるようになります。

    • 第6章クイズ

      第6章の理解を確認します。

    main.c
    エディタを読み込んでいます

    メモ

    文字列(char配列)

    ⌘S で保存