
C言語入門|C言語で文字列を扱う最初の壁:String型の擬似導入と安全な使い方
「文字列ってどう扱うの?😢」と悩むあなたへ、やさしく解説!
C言語って、数値や1文字を扱うのはとても得意なんですが……実は “文字列を扱うための専用の型(String型)”が最初から用意されていません。
これは Java や Python を触った経験がある人にとっては衝撃ですよね 🫢
でも安心してください!
この記事では、C言語の「文字列の壁」を越えるための秘密兵器として、CでString型を“擬似的に使えるようにする方法” をやさしく紹介します。

💡他の言語にはある“文字列型”が、なぜCにはないの?
Java を例にすると……
String monsterName = "ケルベロス";こんなふうに 好きな文字列をそのまま変数に入れられます。
とても便利で、入門者には欠かせない仕組みですね✨
ところが C 言語では……
- 1文字 → char
- 数値 → int, double
- 文字列 → ❌「専用型なし」
えっ……文字列を扱えなかったら、名前もメッセージも表示できないじゃん!と誰でも思いますよね 😭
これが “C言語入門者が最初にぶつかる壁” なんです。
🧱入門者の前に立ちはだかる「文字列の壁」
C言語で文字列を使うには、実は…
- 配列
- メモリの管理
- 終端文字(\0)
- ポインタ
といった “難しめ” の概念を知る必要があります。
だからこそ、プロでも混乱することの多い領域なんです💦
✨救世主登場!String型を“作り出す”おまじない
「じゃあ、String型が無いなら作ればいいじゃない?😎」
というわけで、次の1行を書くだけで C でも String型“っぽいもの”が使えるようになります。
typedef char String[1024];これは「char の配列を String という新しい名前で呼べるようにする」命令です。
🧙♂️ちょっと解説:typedef の書式
| 書式 | 意味 |
|---|---|
| typedef 既存の型 新しい型名; | 型に別名をつける。 |
つまり……
- char[1024] → “1024文字入る配列”
- String → その別名
🧪動かしてみよう!
プロジェクト名:2-11-1 ソースファイル名: sample2-11-1.c
#include <stdio.h>
typedef char String[1024]; // 文字列型っぽいものを作る
int main(void)
{
String heroName = "アークナイト";
printf("勇者の名前は%sです!\n", heroName); // 文字列は%sで表示
return 0;
}👀 たった1行で String型が使えた!
これでもう "アークナイト" みたいな文字列を気軽に扱えるようになります 🎉
⚠️でも待って!String型には“安全に使うためのルール”がある
とくに大事なのが、次の3つの約束です。
📝String型の3つの大切なルール
| ルール | 内容 |
|---|---|
| ① 配列サイズ1024を小さくしてはいけない | 小さいと文字列が入り切らず危険 |
| ② 「1024文字入る」と思ってはいけない | 実際には全角文字はもっと少ししか入らない |
| ③ 初期化以外で“=”代入をしてはいけない | 配列に = は禁止!破壊的なバグの原因 |
③が特に重要‼️
String a = "ミノタウロス"; // OK(初期化)
String b;
b = "クラーケン"; // NG(= で代入してはいけない)
String c = a; // NG(変数の代入も不可)なぜ = が使えないのか?
→ String は「配列」であり、配列への代入は C 言語の仕様上できないためです。
このあたりは 配列とポインタの仕組み を理解すると腑に落ちますが、今はルールとして覚えておけばOK👌
📦 配列を使って文字列を扱う方法(String型の本質はこちら)
実は String型の正体は 配列 なので、次のように書けば文字列は扱えます。
char name[20] = "slime"; // 文字列として初期化配列と文字列の関係
| 文字 | s | l | i | m | e | \0 |
|---|---|---|---|---|---|---|
| 役割 | 1文字 | 1文字 | 1文字 | 1文字 | 1文字 | 終端文字 |
C言語では、文字列は「最後に \0 を持つ文字の集まり」です。
つまり、「\0」を忘れると文字列は壊れます😱
String型はこの \0 を自動でつけてくれるので便利なんです。
🧭識別子(変数名)の命名規則
プログラミングに慣れていくと、読みやすい名前の付け方も重要になります。
| 名前の付け方 | 例 | 特徴 |
|---|---|---|
| アッパーキャメル | MyAge | 型名・構造体名に使われることも |
| ロワーキャメル | myAge | 関数名・変数名によく使う |
| スネークケース | my_age | C言語では一般的 |
| チェインケース | my-age | ❌ Cでは使用不可 |
このサイト「C言語入門」の記事では次のルールで表記していきます👇
- 関数名:ロワーキャメル(動詞で始める)
- 変数名:ロワーキャメル(名詞で始める)
- 定数名:スネークケース(大文字)
- ユーザー定義型名:アッパーキャメル
