C言語の基本|コマンドラインと文字コード

CLIと文字コードを先に押さえて、C言語のコンパイルと日本語表示のつまずきを減らそう。

C言語の学習では、ソースコードを書く前後で「コマンドライン」と「文字コード」に触れる場面が出てきます。
最初は少し難しく見えるかもしれませんが、ここを早めに理解しておくと、あとで「コンパイルできない」「実行したのに日本語が変に表示される」といったつまずきをかなり減らせます。

コマンドラインは、文字で命令を入力してコンピュータを操作する画面です。C言語では、gccでコンパイルしたり、作成した実行ファイルを起動したりするときに使います。Windowsでは、コマンドプロンプトやPowerShellが代表的なコマンドライン環境です。

一方、文字コードは、文字をコンピュータの中で扱うためのルールです。VS CodeではUTF-8で保存することが多いですが、Windowsのコマンドプロンプトでは環境によってShift-JIS系の設定が使われることがあります。この違いが、日本語の文字化けにつながることがあります。

ここでは、CLIの基本、コマンドプロンプトとPowerShellの違い、Shift-JISとUTF-8の考え方、chcp 65001 による文字化け対策、そして日本語表示を確認するCプログラムまでを、順番に整理していきます。

まず押さえたい全体像

コマンドラインと文字コードは、別々の話に見えますが、C言語の学習ではしっかりつながっています。
C言語では、プログラムを書いたあとにコマンドでコンパイルし、実行結果を画面に表示します。その表示結果に日本語が含まれる場合、文字コードの設定が関係してきます。

項目内容目的
CLIの基本CLIとは何か、何に使うかC言語学習での役割を理解する
WindowsのCLI比較コマンドプロンプトとPowerShellの違いどちらを使うか判断しやすくする
文字コードの基本Shift-JISとUTF-8の違い文字化けの原因を理解する
文字化け対策chcp 65001 の使い方Windowsで日本語を表示しやすくする
動作確認日本語表示のCプログラム実際に文字化けしないか確認する

最初に全体像を見ておくと、C言語の実行環境で何を確認すればよいかが分かりやすくなります。
特に、VS Code、gcc、コマンドプロンプト、文字コードは、C言語学習の最初の段階で一緒に登場しやすいので、ここで整理しておきましょう。

図1:CLIでC言語を動かす基本の流れ

この図から分かること

C言語では、ソースコードを書くだけで終わりではありません。CLIを使ってgccにコンパイルを依頼し、作成された実行ファイルを起動して、結果を文字で確認します。最後に表示される文字が日本語の場合、文字コードの設定が合っていないと文字化けが起こることがあります。

CLIとは何か

CLIは、Command Line Interfaceの略です。
日本語では、コマンドラインインターフェースと呼ばれます。マウスでボタンを押して操作するGUIとは違い、キーボードから文字でコマンドを入力して、コンピュータに指示を出します。

たとえば、C言語の学習では次のような操作をCLIで行います。

  • GCCのバージョンを確認する
  • C言語のソースコードをコンパイルする
  • 作成された実行ファイルを起動する
  • エラーメッセージを確認する
  • フォルダーを移動する

CLIは、最初は黒い画面に文字を入力するだけの少しそっけない道具に見えるかもしれません。
しかし、C言語の学習ではとても実用的です。コンパイルと実行の流れが見えやすく、エラーが出たときにも原因を確認しやすくなります。

C言語でCLIを使う理由

C言語のプログラムは、通常、ソースコードを書いただけでは実行できません。
人間が読めるC言語のコードを、コンピュータが実行できる形へ変換する必要があります。この変換をコンパイルといいます。

CLIでは、次のようなコマンドを使ってコンパイルや実行を行います。

操作何をしているか
GCCの確認gcc -vGCCのバージョンや設定を確認する
コンパイルgcc check.c -o checkCソースを実行ファイルに変換する
実行check作成した実行ファイルを起動する
文字コード変更chcp 65001cmdのコードページをUTF-8に切り替える

CLIは、難しい特別な道具というより、C言語の作業を進めるための基本的な操作場所です。
最初は短いコマンドから慣れていけば大丈夫です。

Windowsでよく使うCLI

Windowsでよく使うCLIには、コマンドプロンプトとPowerShellがあります。
どちらでもC言語のコンパイルや実行はできますが、学習の最初はコマンドプロンプトのほうがシンプルで分かりやすいことが多いです。

項目コマンドプロンプトPowerShell
特徴シンプルで軽い高機能で自動化に強い
表示名cmd、コマンドプロンプトPowerShell
学習初期の使いやすさ基本操作を覚えやすい機能が多く少し広い
C言語学習との相性コンパイルと実行に十分もちろん使用できる
文字コードの注意コードページ設定の影響を受けやすいバージョン差を意識すると安心

C言語を学び始めたばかりの段階では、まずコマンドプロンプトで gcc -v、gcc ファイル名.c -o 実行ファイル名、実行ファイルの起動ができるようになることを目標にするとよいです。

PowerShellは、より高度な操作や自動化にも使える便利なツールです。ただし、バージョンや設定によって文字コードの扱いが変わることがあるため、最初はcmdで説明をそろえると理解しやすくなります。

文字コードとは何か

文字コードは、文字をコンピュータの中で数値として扱うためのルールです。
コンピュータは内部で0と1を使って処理しています。そのため、A、B、あ、日、語といった文字も、コンピュータの中では決められた数値として扱われます。

文字コードは、次のように考えると分かりやすいです。

たとえ実際の意味
辞書文字と数値の対応表
翻訳ルールどの数値をどの文字として読むかの約束
読み方の違い同じデータでも別の文字に見える原因
文字化け保存時と表示時のルールが合わないことで起きる表示崩れ

大切なのは、文字化けが起きたとき、必ずしもプログラムのデータそのものが壊れているとは限らないということです。
多くの場合、保存したときの文字コードと、表示するときの文字コードが合っていないために、違う文字として解釈されてしまいます。

図2:文字コードと文字化けのしくみ

この図から分かること

文字化けは、文字そのものが突然壊れるというより、保存するときのルールと表示するときのルールがずれることで起こります。VS CodeでUTF-8として保存した日本語を、コマンドプロンプト側が別の文字コードとして解釈すると、実行結果の日本語が崩れて見えることがあります。

Shift-JISとUTF-8の違い

日本語を扱うときによく出てくる文字コードが、Shift-JISとUTF-8です。
どちらも日本語を扱えますが、使われる場面や相性に違いがあります。

項目Shift-JISUTF-8
主な利用場面従来のWindows日本語環境現在の開発環境やWeb全般
特徴日本語Windowsで長く使われてきた多くのOSやWebで広く使われる
VS Codeとの相性設定次第で使える既定として使われることが多い
コマンドプロンプトとの関係日本語環境で使われることが多いchcp 65001 で合わせられる
C言語学習での注意UTF-8のファイル表示でズレることがあるVS Codeで扱いやすい

C言語の学習では、VS CodeでUTF-8としてソースコードを保存し、コマンドプロンプトで実行結果を表示する、という流れがよくあります。
このとき、コマンドプロンプト側がShift-JIS系の設定のままだと、日本語の表示が崩れることがあります。

たとえば、ソースコードの中で次のように日本語を表示する場合を考えます。

printf("日本語を表示します。\n");

プログラムの内容は正しくても、表示する側の文字コード設定が合っていないと、実行結果が読みにくい文字列になってしまうことがあります。

文字化けが起きる原因

文字化けの原因はひとつではありませんが、C言語学習の最初によくあるのは、保存側と表示側の文字コードが合っていないケースです。

原因起きること
保存時の文字コードと表示側が違うUTF-8で保存し、Shift-JIS系で表示日本語が崩れる
CLIのコードページ設定が合わないcmdの既定設定で日本語を表示文字化けすることがある
実行環境が違うWindows、Linux、macOSで表示条件が違う同じプログラムでも結果が変わることがある
ファイルの保存形式が混在するファイルごとに文字コードが違う一部だけ表示がおかしくなることがある

文字化けが起きたときは、すぐにC言語の文法ミスだと決めつけないことが大切です。
エラーではなく、表示設定の問題である可能性があります。

chcp 65001 でcmdをUTF-8に切り替える

Windowsのコマンドプロンプトでは、コードページという設定が表示結果に影響します。
コードページは、文字をどのルールで表示するかを決める番号のようなものです。

UTF-8に切り替えるときによく使うのが、次のコマンドです。

chcp 65001

このコマンドの意味を分解すると、次のようになります。

部分意味
chcpアクティブなコードページを変更するコマンド
65001UTF-8を表すコードページ番号

つまり、chcp 65001 は、コマンドプロンプトの表示ルールをUTF-8に切り替えるためのコマンドです。
VS CodeでUTF-8として保存したCプログラムを実行するとき、cmd側もUTF-8に合わせておくと、日本語が文字化けしにくくなります。

chcp 65001 を使う流れ

実際には、Cプログラムを実行する前に、コマンドプロンプトで次のように操作します。

chcp 65001

そのあとで、コンパイルや実行を行います。

gcc encoding_check.c -o encoding_check
encoding_check

この流れにすると、UTF-8で保存されたソースコードの日本語メッセージを、cmd側でもUTF-8として表示しやすくなります。

図3:cmdをUTF-8に切り替えて日本語を表示する流れ

この図から分かること

chcp 65001 は、cmdの文字コード設定をUTF-8に合わせるためのコマンドです。VS CodeでUTF-8として保存したCプログラムを実行する前にこの設定を行うと、日本語の実行結果が文字化けしにくくなります。コンパイルと実行だけでなく、表示環境も整えることが大切です。

cmdを開き直すと設定が戻ることがある

chcp 65001 は、現在開いているコマンドプロンプトのコードページを変更するコマンドです。
そのため、cmdを閉じて新しく開くと、既定のコードページに戻ることがあります。

状態コードページの例
新しくcmdを開いた直後日本語環境では932系の場合がある
chcp 65001 実行後UTF-8になる
cmdを閉じて再度起動既定値に戻ることがある

この動きを知っておくと、「昨日は日本語が表示できたのに、今日はまた文字化けする」というときにも落ち着いて対応できます。
Cプログラムを実行する前に、必要に応じて chcp 65001 をもう一度実行すれば大丈夫です。

PowerShellを使う場合の補足

PowerShellでもC言語のコンパイルや実行はできます。
ただし、PowerShellはバージョンによってエンコードの扱いが違うことがあります。Windows PowerShell 5.1とPowerShell 7系では、既定のエンコード挙動に違いがあるため、文字コードの説明が少し複雑になります。

学習の最初は、まずコマンドプロンプトで次の流れに慣れると分かりやすいです。

  • gcc -v でGCCを確認する
  • chcp 65001 でUTF-8に切り替える
  • gcc ファイル名.c -o 実行ファイル名 でコンパイルする
  • 実行ファイルを起動する
  • 日本語の表示を確認する

PowerShellは、cmdで基本操作に慣れてから使い始めても遅くありません。
もちろん、PowerShellを使っても問題ありませんが、教材の最初ではcmdにそろえると説明を追いやすくなります。

macOSとLinuxの場合

macOSやLinuxのターミナルでは、最近の環境ではUTF-8が前提になっていることが多いです。
そのため、Windowsのcmdほどコードページを意識しなくても、日本語がそのまま表示できる場合があります。

ただし、どのOSでも考え方は同じです。

  • ソースコードをどの文字コードで保存しているか
  • ターミナルがどの文字コードで表示しているか
  • コンパイル時や実行時に文字がどう扱われているか

日本語が崩れたときは、C言語の文法だけでなく、ファイルの保存文字コードとターミナルの表示設定も確認する、という考え方を持っておくと役立ちます。

CLIで日本語表示を確認するプログラム

ファイル名:encoding_check.c

#include <stdio.h>

int main(void)
{
    printf("CLIで日本語表示を確認します。\n");
    printf("文字コードが合っていれば、正しく読めます。\n");
    printf("C言語の学習を少しずつ進めましょう。\n");

    return 0;
}

実行結果の例

CLIで日本語表示を確認します。
文字コードが合っていれば、正しく読めます。
C言語の学習を少しずつ進めましょう。

このプログラムは、C言語の実行結果として日本語が正しく表示されるかを確認するための例です。
プログラムの処理自体はとてもシンプルで、printf を使って3行の日本語メッセージを表示しています。

内容役割
#include <stdio.h>標準入出力の準備printf を使えるようにする
int main(void)プログラムの開始地点Cプログラムの実行入口
printf(...)文字列を表示日本語が正しく表示されるか確認する
return 0;正常終了を表すプログラムを終了する

このプログラムでは、日本語の文字列を含んでいるため、文字コードの確認に向いています。
VS CodeでUTF-8として保存し、cmdで chcp 65001 を実行してからコンパイル・実行すると、日本語が正しく表示されるか確認しやすくなります。

コンパイルと実行の手順

encoding_check.c を保存したら、コマンドプロンプトでファイルのあるフォルダーへ移動し、次の順番で実行します。

chcp 65001
gcc encoding_check.c -o encoding_check
encoding_check

それぞれの意味は次のとおりです。

コマンド用途
chcp 65001cmdをUTF-8に切り替える
gcc encoding_check.c -o encoding_checkCファイルをコンパイルして実行ファイルを作る
encoding_check作成した実行ファイルを起動する

コンパイル時にエラーが出なければ、encoding_check.exe が作成されます。
そのあと encoding_check を実行し、日本語メッセージが正しく表示されれば、CLIと文字コードの確認はうまくできています。

よく使うコマンドを整理する

C言語の学習を始める段階では、まず次のコマンドに慣れておくと十分です。

コマンド用途
gcc -vGCCのバージョンや設定を確認する
chcp 65001cmdをUTF-8に切り替える
gcc encoding_check.c -o encoding_checkCファイルをコンパイルする
encoding_check実行ファイルを起動する

この4つを使えるようになると、C言語の基本的な学習が進めやすくなります。
最初はコマンドを暗記しようとするより、「何のために入力しているのか」を意識すると理解しやすいです。

文字化けしたときの確認ポイント

日本語が文字化けしたときは、次の順番で確認すると整理しやすいです。

確認項目見るポイント
VS Codeの保存文字コードUTF-8で保存されているか
cmdのコードページchcp 65001 を実行したか
cmdを開き直していないか開き直すと設定が戻ることがある
プログラムの文字列日本語部分が正しく入力されているか
実行しているファイル古い実行ファイルを動かしていないか

C言語の学習では、エラーと文字化けを分けて考えることが大切です。
コンパイルエラーはC言語の書き方に問題があることが多いですが、文字化けは表示環境の文字コード設定が原因になっていることがあります。

CLIと文字コードに慣れておくと、次に学ぶ「コンパイルして実行する」作業がぐっと進めやすくなります。C言語では、コマンドを入力し、結果を読み取り、少しずつ修正していく流れが基本になります。最初は短いコマンドと短いプログラムから始めて、確実に動く感覚をつかんでいきましょう。