Windows環境でのC言語:プログラムの作成から実行まで

【概要】本資料は、Windows環境でC言語プログラミングを始めるための入門教材である。Visual Studio Build Toolsを用いた開発環境の構築から、コンパイル・実行の基本操作、標準入出力を扱うプログラムの作成までを扱う。

スライドによる説明: [PDF], [PPTX]

項目 内容
対象読者 C言語を初めて学ぶ学生。Windowsの標準機能(メモ帳)を用いてC言語プログラミングの基礎を学習する者。
前提条件 Windowsの基本操作(ファイル作成、コマンドプロンプトの起動)ができること
学習目標 C言語のソースコードをコンパイルして実行できる。標準入力からデータを読み取るプログラムを作成できる。

【重要概念】

【目次】

  1. はじめに
  2. コンパイルとは何か
  3. 最初のプログラム
  4. 開発環境の準備
  5. メモ帳でのプログラム作成と保存
  6. コンパイルと実行
  7. キーボード入力のプログラム
  8. よくあるエラーとその対処法
  9. まとめ

1. はじめに

本資料では、C言語のプログラムをWindows環境で作成し、実行する方法を学ぶ。

本資料で用いるのは、Windowsに標準で搭載されているメモ帳と、無料で入手できるVisual Studio Build Toolsである。これらにより、追加の有償ツールを用いずにC言語プログラミングを行うことができる。

本資料では、文字列を出力する「Hello, World!」プログラムと、キーボードからの入力を処理するプログラムを扱う。ここで学ぶメモ帳の操作、ならびにプログラムのコンパイルおよび実行の手順は、C言語プログラミングの基礎となる。

2. コンパイルとは何か

C言語では、実行前にソースコードを機械語(CPUが実行できる形式)に変換する。この変換処理を「コンパイル」と呼ぶ。

作業手順

  1. ソースコードを作成する(hello.c)
  2. cl hello.c でコンパイルする → hello.exe が生成される
  3. hello.exe で実行する

ソースコードを修正した場合は、再度コンパイルしてから実行する。

3. 最初のプログラム

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

各行の役割

コード 役割
#include <stdio.h> printf 関数を用いるために必要
int main() プログラムの実行開始位置
printf("Hello, World!\n"); 文字列を画面に出力する。\n は改行を表す。末尾にセミコロンが必要。
return 0; プログラムの終了

上記のソースコードをテキストエディタで作成し、hello.c という名前で保存する。

4. 開発環境の準備

4.1 オンライン環境

インストールを行わずに、ブラウザ上でコンパイルと実行ができる。

アルゴリズムとデータ構造のデモサイトとして、VisuAlgo がある。

4.2 ローカル環境の構築

  1. Windowsで、管理者権限でコマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
  2. winget(Windowsパッケージマネージャー)が利用可能か確認する。
    winget --version
    wingetのバージョン確認コマンドを実行した結果の画面
  3. 以下のコマンドを管理者権限コマンドプロンプトで実行する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
    REM VC++ ランタイム
    winget install --scope machine --id Microsoft.VCRedist.2015+.x64 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/quiet /norestart"
    
    REM Build Tools + Desktop development with C++(VCTools)+ 追加コンポーネント(一括)
    winget install --id Microsoft.VisualStudio.2022.BuildTools --accept-source-agreements --accept-package-agreements ^
        --override "--passive --wait --norestart --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.ComponentGroup.ClangCL --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.Windows11SDK.26100"

    --add で追加されるコンポーネント

    上記のコマンドでは、まず VC++ ランタイム(Visual C++ 再頒布可能パッケージ)をインストールし、続いて Build Tools 本体と以下のコンポーネントを --override オプションにより一括して追加する。

    • VCTools:C++ デスクトップ開発ワークロード(--includeRecommended により、MSVC コンパイラ、C++ AddressSanitizer、vcpkg、CMake ツール、Windows 11 SDK 等の推奨コンポーネントが含まれる)
    • VC.Llvm.Clang:Windows 向け C++ Clang コンパイラ
    • ClangCL:clang-cl ツールセットを含むコンポーネントグループ(MSBuild から Clang を用いるために必要)
    • VC.CMake.Project:Windows 向け C++ CMake ツール
    • Windows11SDK.26100:Windows 11 SDK(ビルド 10.0.26100)

    インストール完了の確認

    winget list Microsoft.VisualStudio.2022.BuildTools

    上記以外のコンポーネントが必要になった場合は、Visual Studio Installer から個別にインストールできる。

4.3 インストールの確認

インストール完了後、スタートメニューから「x64 Native Tools Command Prompt for VS 2022」を検索し、起動できることを確認する。

5. メモ帳でのプログラム作成と保存

5.1 メモ帳の起動

  1. スタートメニュー(画面左下のWindowsマーク)をクリックする。
  2. メモ帳」と入力する。
    スタートメニューでメモ帳を検索した画面
  3. 「メモ帳」アプリが表示されるので、クリックして起動する。

5.2 プログラムの入力

セクション3で示したプログラムを入力する(または貼り付ける)。

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

5.3 プログラムの保存

  1. 「ファイル」メニューから「名前を付けて保存」を選択する。
    メモ帳のファイルメニューから名前を付けて保存を選択する画面
  2. 保存場所を選択する。本資料では「デスクトップ」を用いる。
  3. 画面下の「ファイルの種類」を「すべてのファイル(*.*)」に変更する。
    • 初期設定の「テキスト文書(*.txt)」のままでは、ファイル名に自動的に「.txt」が追加され、「hello.c.txt」のようになる。これを防ぐため、「すべてのファイル(*.*)」に変更する。
    保存ダイアログでファイルの種類をすべてのファイルに変更した画面
  4. ファイル名を「○○○.c」と入力する。
    • ○○○は任意の名前(例:hello)。
    • .cはC言語のソースコードであることを示す拡張子(ファイルの種類を表す部分)である。この拡張子により、ファイルがC言語のソースコードとして認識される。
  5. 「保存」をクリックする。

6. コンパイルと実行

6.1 開発者コマンドプロンプトの起動

スタートメニューから「x64 Native Tools Command Prompt for VS 2022」を選択する。

6.2 ソースコードのあるフォルダへ移動

cdコマンド(フォルダ間を移動する命令)を用いる。デスクトップに保存した場合は、以下のように入力する。

cd /d c:%HOMEPATH%\Desktop

または、ユーザー名を直接指定する場合は以下のとおりである。

cd C:\Users\ユーザー名\Desktop

フォルダ名にスペースや日本語が含まれる場合は、「"」で囲む。例:

cd "C:\Users\ユーザー名\Desktop\C言語練習"

6.3 コンパイル

cl hello.c

/out:hello.exe が表示されればコンパイル成功である。error が表示された場合はソースコードに誤りがある。

6.4 実行

hello.exe

Hello, World! が表示されれば実行成功である。

プログラム名は作成時に付けた名前を用いる。大文字と小文字は区別されるため注意が必要である(「Hello.c」と「hello.c」は異なるファイルとして扱われる)。

7. キーボード入力のプログラム

キーボードから入力された文字のバイト数を数えるプログラムを作成する。

#include <stdio.h>

int main() {
    int c;
    int count = 0;

    while ((c = getchar()) != EOF) {
        count = count + 1;
    }

    printf("バイト数: %d\n", count);
    return 0;
}

各行の解説

コード 解説
int c; 読み取った文字を格納する変数
int count = 0; バイト数を数えるカウンタ
while ((c = getchar()) != EOF) 1バイト読み取り、EOF(End of File、入力の終わり)でなければループを続ける
count = count + 1; カウンタの値を1増やす
printf("バイト数: %d\n", count); バイト数を出力する

実行例

cl count.c
count.exe
a b c d
^Z
バイト数: 8

入力の終わりを伝えるには、行の先頭で Ctrl+Z を押し、Enter を押す。

8. よくあるエラーとその対処法

8.1 コンパイルエラー

エラーメッセージには行番号が含まれる。該当行を確認して修正し、再度コンパイルする。

例:hello.c(5): error C2065: 'prntf': undeclared identifier

→ 5行目の prntf が誤り(正しくは printf)である。

例:hello.c(4): error C2146: syntax error: missing ';' before identifier 'return'

→ 4行目の末尾にセミコロンが欠落している。

8.2 「'cl' は内部コマンドまたは外部コマンド...」と表示される場合

8.3 「No such file or directory」または「ファイルが見つかりません」と表示される場合

8.4 リンクエラー(LNK2019, LNK1120など)

8.5 「アクセスが拒否されました」と表示される場合

8.6 文字化けが発生する場合

9. まとめ

項目 内容
コンパイル cl ファイル名.c
実行 ファイル名.exe
エラー対処 エラーメッセージの行番号を確認して修正する
入力終了 Ctrl+Z → Enter

サイト内の関連ページ