
C言語のきほん|コマンドラインと文字コード
CLIと文字コードを先に押さえると、C言語の学習はぐっとラクになる。文字化けを防いで、安心して開発を始めよう
C言語の学習を始めると、コードを書く前にまず出会うのが CLI と文字コードです。
ここは最初に少しだけ理解しておくと、その後の コンパイルできない、実行できたのに文字が変 というつまずきをかなり減らせます。
この記事では、Windows でよく使う CLI(コマンドプロンプト / PowerShell)の違いをやさしく整理しつつ、文字コードの基本、文字化けの原因、そして実際の対処方法までをまとめて説明します。特に Windows のコマンドプロンプトでは、コードページの設定が表示結果に影響するので、C言語の学習ではここを押さえておくのが大事です。Microsoft の chcp コマンドの説明でも、chcp はコンソールのアクティブコードページを変更するためのコマンドとして案内されています。 (Microsoft Learn)
また、VS Code 側は UTF-8 を前提に使うことが多く、PowerShell / コマンドプロンプトとの文字コードの違いが混乱ポイントになりやすいです。PowerShell と VS Code のエンコードに関する Microsoft ドキュメントでも、VS Code の既定エンコードは UTF-8 without BOM と説明されています。 (Microsoft Learn)

まず押さえたい全体像
この記事でやること
| 項目 | 内容 | 目的 |
|---|---|---|
| CLIの基本 | CLIとは何か、何に使うか | C言語学習での役割を理解する |
| WindowsのCLI比較 | コマンドプロンプトとPowerShellの違い | どちらを使うか判断しやすくする |
| 文字コードの基本 | Shift-JIS と UTF-8 の違い | 文字化けの原因を理解する |
| 文字化け対策 | chcp 65001 の使い方 | Windowsで日本語を正しく表示する |
| 動作確認 | 日本語表示のサンプルCプログラム | 実際に試して確認する |
最初に全体を見ておくと、CLI と文字コードが別の話ではなく、C言語の実行環境としてつながっていることが見えやすくなります。
CLIとは何か
CLI は、文字でコマンドを入力してコンピュータに指示を出す操作方法です。
マウス中心の GUI と違って、キーボードで命令を打ち込んで作業します。
Windows には cmd.exe(コマンドプロンプト)が標準のコマンドインタープリターとして用意されており、Microsoft のコマンド資料にも cmd は cmd.exe の新しいインスタンスを開始するコマンドとして説明されています。 (Microsoft Learn)
また、PowerShell はコマンドラインシェル + スクリプト言語 + 自動化基盤として提供されているツールで、より高度な自動化にも向いています。 (Microsoft Learn)
図:CLIのイメージ
あなたがコマンドを入力
↓
CLI が命令として受け取る
↓
OS が処理する
↓
結果が文字で表示される

この図は、CLI を 操作画面 ではなく 指示の通り道 としてイメージしやすくするための図です。
C言語では、この流れの中で gcc にコンパイルを頼んだり、作った実行ファイルを起動したりします。
C言語でCLIを使う理由
C言語の学習では、CLI を使って次の2つをよく行います。
- コンパイル
- 実行
C言語学習でのCLIの役割
| 操作 | 例 | 何をしているか |
|---|---|---|
| コンパイル | gcc sample.c -o sample | Cソースを実行ファイルに変換 |
| 実行 | sample | 実行ファイルを起動 |
| 確認 | gcc -v | GCCのバージョンや設定を確認 |
ポイントは、CLI が 難しい特別なもの ではなく、C言語の作業を進めるための実用ツールだと分かることです。
最初は短いコマンドから慣れていけば大丈夫です。
図:C言語の基本的な流れ
Cのソースコードを書く
↓
gcc でコンパイル
↓
実行ファイルができる
↓
実行して結果を見る

ここに 文字コード の話が入ってくるのは、最後の 結果を見る ときに日本語表示へ影響するからです。
Windowsでよく使うCLI
コマンドプロンプトとPowerShellの違い
Windows では代表的な CLI として、コマンドプロンプトと PowerShell が使えます。
どちらでも C言語の開発はできますが、学習の最初はコマンドプロンプトのほうがシンプルで分かりやすいことが多いです。
Microsoft の cmd の説明ページでも、より高度なスクリプトや自動化には PowerShell を検討するよう案内があります。つまり、cmd はシンプル、PowerShell はより高機能、という位置づけで考えると分かりやすいです。 (Microsoft Learn)
コマンドプロンプトとPowerShellの比較
| 項目 | コマンドプロンプト | PowerShell |
|---|---|---|
| 特徴 | シンプルで軽い | 高機能で自動化に強い |
| 学習のしやすさ | はじめてでも扱いやすい | 機能が多く少し広い |
| C言語学習との相性 | 基本操作に十分 | もちろん使える |
| 文字コードの注意 | コードページ設定の影響を受けやすい | バージョン差を意識すると安心 |
図:使い分けの考え方
まずはC言語の基本を学ぶ
↓
コマンドプロンプトで十分
↓
慣れてきたら
↓
PowerShell も使える

まずは cmd で コンパイルと実行 ができる状態を作ればOKです。
文字コードとは何か
文字コードは、文字をコンピュータの中で数値として扱うためのルールです。
コンピュータは 0 と 1 で処理するので、A や あ も内部では数値に変換されています。
Microsoft のコードページ関連ドキュメントでも、コードページは文字と数値の対応表として説明されています。たとえば日本語向けには code page 932(Shift JIS 系)が挙げられています。 (Microsoft Learn)
文字コードをやさしく理解するための見方
| たとえ | 実際の意味 |
|---|---|
| 辞書 | 文字と数値の対応表 |
| 翻訳ルール | どの数値をどの文字として読むかの約束 |
| ルール違い | 同じ数値でも別の文字に見える原因 |
大事な点は、文字化けの正体が データが壊れた ではなく 読み方のルールが違う ことが多い、というところです。
図:文字コードのイメージ
「日」という文字
↓
ある文字コードのルールで数値に変換
↓
保存・出力される
↓
別のルールで読むと
↓
文字化けすることがある

この図は、文字化けが起きる流れをシンプルに見せています。
C言語のプログラムそのものは正しくても、表示側のルールが違うと文字化けします。
Shift-JIS と UTF-8 の違い
日本語を扱う場面でよく出てくるのが Shift-JIS と UTF-8 です。
Shift-JIS
Windows の日本語環境で長く使われてきた文字コードです。
Microsoft のコードページ一覧でも、932 は shift_jis として案内されています。 (Microsoft Learn)
UTF-8
現在、Web や多くの開発環境で広く使われる文字コードです。
PowerShell / VS Code のエンコード解説でも UTF-8 が中心的に扱われており、VS Code の既定エンコードは UTF-8 without BOM と説明されています。 (Microsoft Learn)
Shift-JIS と UTF-8 の比較
| 項目 | Shift-JIS | UTF-8 |
|---|---|---|
| 主な利用場面 | 従来のWindows日本語環境 | 現在の開発環境・Web全般 |
| 互換性 | 環境依存で注意が必要 | 国際的に互換性が高い |
| C言語学習での注意 | cmd の既定表示と相性がある | VS Code の既定と相性がよい |
今回の教材で起きやすいズレ
VS Code(UTF-8で保存)
↓
コマンドプロンプト(Shift-JIS系で表示)
↓
日本語の表示が合わない
↓
文字化け

この図は、今回のテーマの核心です。
VS Code 側とコマンドプロンプト側の文字コードがズレると、ソースコードは正しくても表示が崩れます。
文字化けとは何か
文字化けは、文字コードの解釈が一致していないときに起こる表示の乱れです。
よくあるのは、UTF-8 で書かれた日本語を Shift-JIS 前提の表示環境で読んでしまうケースです。
文字化けが起きるよくある原因
| 原因 | 例 | 結果 |
|---|---|---|
| 保存時の文字コードと表示側が違う | UTF-8で保存 → Shift-JIS前提で表示 | 日本語が崩れる |
| CLIのコードページ設定が合っていない | cmd の設定が既定のまま | 実行結果の日本語が崩れる |
| 環境ごとの差 | Windows / Linux / macOS の差 | 同じプログラムでも表示が変わる |
図:文字化けの原因を分解する
ソースコードの文字列(日本語)
↓
コンパイル
↓
実行時にCLIへ出力
↓
CLIの文字コード設定で解釈
↓
一致すれば正常 / 不一致なら文字化け

実際には 表示環境の設定 が原因になっていることが多いです。
当サイトでのおすすめ対応
VS Code は UTF-8 を前提に使うことが多いので、Windows のコマンドプロンプト側を UTF-8 に合わせるのが分かりやすいです。
そのために使うのが chcp 65001 です。
Microsoft の chcp ドキュメントでは、chcp はアクティブなコードページを変更するコマンドで、番号で指定します。 (Microsoft Learn)
また、Microsoft のコードページ一覧では 65001 は UTF-8、932 は Shift-JIS 系として確認できます。 (Microsoft Learn)
実際の手順
- コマンドプロンプトを開く
- chcp 65001 を入力する
- そのあとでプログラムを実行する
chcp 65001 の意味
| コマンド | 意味 |
|---|---|
| chcp | コードページを変更する |
| 65001 | UTF-8 のコードページ番号 |
図:設定変更の流れ
cmd を起動
↓
chcp 65001 を入力
↓
コードページが UTF-8 になる
↓
日本語を含むプログラムを実行
↓
文字化けしにくくなる

chcp 65001 を ただ覚える のではなく、何を変えているのかを理解しやすくするための図です。
コマンドプロンプト再起動で戻る理由
教材にもあるとおり、コマンドプロンプトを閉じて開き直すと、設定が元に戻ることがあります。
これは chcp が そのコンソールセッションのアクティブコードページ を変更するコマンドだからです。新しく開いたウィンドウは、また既定の設定で始まります。Microsoft の chcp 説明も、アクティブなコンソールコードページの変更として説明しています。 (Microsoft Learn)
よくある動き
| 状態 | コードページ |
|---|---|
| 新しく cmd を開いた直後 | 既定値(日本語環境では932系が多い) |
| chcp 65001 実行後 | UTF-8(65001) |
| cmd を閉じて再度起動 | 既定値に戻ることがある |
PowerShell を使う場合の補足
PowerShell でも C言語のコンパイルや実行はできます。
ただし、PowerShell はバージョン(Windows PowerShell 5.1 と PowerShell 7 系など)で既定のエンコード挙動が異なる部分があるので、教材の最初の段階では cmd のほうが説明をそろえやすいです。PowerShell の文字エンコード解説でも、Windows PowerShell と PowerShell(7系)で既定の挙動に違いがあることが説明されています。 (Microsoft Learn)
PowerShellの文字コードで気をつけたい点
| ポイント | 説明 |
|---|---|
| バージョン差 | 5.1 と 7系で既定挙動が違うことがある |
| ファイル出力 | コマンドによって既定エンコードが違う場合がある |
| 学習初期の方針 | まずは cmd で基本を覚えると整理しやすい |
MacOS と Linux の補足
macOS や Linux の CLI は、最近の環境では UTF-8 前提で動くことが多いので、Windows ほど最初にコードページ設定を意識しなくてもよいケースが多いです。
ただし、環境設定や端末設定によって表示結果は変わることもあるので、日本語が崩れたときは 端末の文字コード設定 と ファイルの保存文字コード を確認する、という考え方は共通です。
動作確認用のシンプルなCプログラム例
今回は 文字コード確認 に合わせたメッセージにしています。
ファイル名:mojibake.c
#include <stdio.h>
int main(void)
{
/* CLIで日本語が正しく表示されるか確認する */
printf("CLIで日本語を確認できました!\n");
return 0;
}サンプルプログラムの説明
| 行 | 内容 | 役割 |
|---|---|---|
| #include <stdio.h> | 標準入出力の準備 | printf を使うため |
| int main(void) | プログラムの開始地点 | 実行の入口 |
| printf(...) | 日本語メッセージの表示 | 文字化け確認に使う |
| return 0; | 正常終了 | プログラム終了 |
図:このサンプルの確認手順
ソースを保存(UTF-8)
↓
gcc でコンパイル
↓
cmd で chcp 65001
↓
実行
↓
日本語が正しく表示されるか確認

単にプログラムが動くかだけでなく、表示も確認するのがポイントです。
実際によく使うコマンドまとめ
表最低限これだけ覚えればOK
| コマンド | 用途 |
|---|---|
| gcc -v | GCCの確認 |
| chcp 65001 | cmd を UTF-8 に切り替える |
| gcc sample.c -o sample | コンパイル |
| sample | 実行 |
この4つを使えるようになると、C言語の学習をかなり進めやすくなります。
まとめ
CLI は、C言語で コンパイル と 実行 を行うための大事な道具です。
そして Windows では、CLI と文字コードの組み合わせを理解しておくことで、文字化けのトラブルをかなり防げます。
今回のポイントはこの3つです。
- C言語学習では、まずコマンドプロンプトで基本操作を覚えると進めやすい。
- VS Code は UTF-8 前提、cmd は既定で Shift-JIS 系の設定になることがある。
- chcp 65001 で cmd 側を UTF-8 に合わせると、日本語表示が安定しやすい。
ここを押さえておけば、次の章の コンパイルして実行する 学習に気持ちよく進めます。
