【C言語】WindowsでHello worldするまで
最終更新 2023/06/11 12:18
今回は、WindowsにC言語のコンパイラーを導入する方法を紹介します。
Linuxであればコマンドで簡単に導入が可能ですが、Windowsではそうはいきません。
test1
それでは、まずC言語コンパイラーとなるMinGWをインストールしていきます。
MinGWは、MINimalist Gnu for Windowsの略で、GCCをWindowsで使えるようにするオープンソースの開発環境です。
早速インストールしていきましょう。
https://www.mingw-w64.org/downloads/このサイトを開きます。

#mingw-buildに移動します。
Installation: Github
と書かれているGithubの部分のページを開きます。
今回はGithubでしたが、別のサイトが指定されていることもあるようです。

x86_64-12.2.0-release-win32-seh-msvcrt-rt_v10-rev2をダウンロードします。

ダウンロードが始まりますので気長に待ちます。
ダウンロードが終わりましたら、展開するのですが、7z形式で圧縮されているので、7-Zipをインストールします。
すでに7-Zipを導入されているかたは読み飛ばしてください。
https://sevenzip.osdn.jp/このサイトにアクセスしてください。

このようなページが開くので、一番上のダウンロードリンクより7-Zipをダウンロードします。
ダウンロードが終わったら実行ファイルをクリックしてインストーラーを開きます。

このようになるので、特に事情がなければInstallをクリックしてください。

このようになれば完了です。
Closeボタンを押して閉じてください。
先ほどダウンロードしたMinGWの圧縮ファイルを右クリックし、7-Zip→開くをクリックします。

7-Zipが開くので、展開をクリックしてください。

その後、表示されたウィンドウで、好きなパスを指定しOKボタンをクリックしてください。

このように展開が始まるのでしばらく待ちます。

展開が終わったら、展開されたフォルダを開きます。

このように見えていればMinGWの導入は完了です。
test2
次に、環境変数を設定していきます。
MinGWの導入自体は完成したものの、コマンドプロンプトからgccコマンドを使えるようにするには環境変数を設定する必要があります。

Windowsボタンから、設定を開きます。

設定メニューのトップのシステムを開きます。

右側のシステムの詳細設定を開いてください。

環境変数を開いてください。

このようなウィンドウが開いたら、下の環境変数からPathを選び、編集ボタンをクリックします。

すると、このようになると思います。

新規をクリックし、
%HOMEPATH%\Downloads\mingw64\binと入力し、確定します。(MinGWのフォルダのbinディレクトリのpath)
OK、OKと押してウィンドウを閉じましょう。
設定ができたことを確認するために、コマンドプロンプトを開きgccコマンドを実行しましょう。

Windowsキーを開き、cmdと入力しコマンドプロンプトを開きます。
gcc -v
とコマンドを実行してください。

このように、いろいろ出てきていれば大丈夫です。
導入がうまくいっていない場合は、「'gcc' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」というエラーが出てくるはずです。
test1
それでは、実際にgccコマンドを使ってC言語のソースコードをコンパイルしてみましょう。
まずは、C言語のソースコードを作ります。

適当な場所で右クリック→新規作成→テキストドキュメントをクリックします。

ファイル名を「helloworld.c」にします。拡張子は必ず.cにしてください。
変更できない場合は、エクスプローラーを開き、表示タブからファイル名拡張子にチェックを入れてください。

このような注意が出ますが気にしないで続けます。

先ほど作ったファイルをダブルクリックし、メモ帳(好きなエディター)を選択し、OKで開きます。
毎回これが出るのが面倒な方は「常にこのアプリを使って .cファイルを開く」にチェックを入れてください。

エディターが開いたら、コードを書いていきましょう。
名前からもわかる通り、手始めにHelloWorldのコードを書きます。
#include <stdio.h>
void main(void){
printf("HelloWorld\n");
}
書き終わったら、保存します。
次に、ファイルがあるディレクトリでコマンドプロンプトを開きます。

dirコマンドを実行し、cファイルがあるかを一応確認します。
gcc [Cファイル名]
とコマンドを実行します。この時はgcc helloworld.cです。

このように何も表示されずにプロンプトが表示されていればうまくいっています。

dirコマンドで確認してみると、a.exeという実行ファイルが作成されていると思います。
これが、helloworld.cをコンパイルしてできたアプリケーションです。
a
と実行して、a.exeを実行してください。

Helloworldと表示されていればうまくいっています。
これにて、MinGWの導入は完了です。
test1
大丈夫だとは思いますが、いろいろ動くのか確かめてみたいと思います。
#include <stdio.h>
#include <time.h>
void main(void){
char test[100];
char str[100];
time_t t = time(NULL);
FILE *fp;
printf("入力テスト: ");
scanf("%s", test);
printf("入力された文字列は%s\n", test);
printf("現在時刻は、%s\n", ctime(&t));
fp = fopen("test_write.txt","w");
fprintf(fp,"%s\n", test);
printf("ファイル書き込みテスト\n");
}

さすがにすべての動作を確認することはできないので個人的に気になった部分のみを試します。
このコードでは、
・文字入力
・現在時刻の取得
・ファイル書き込み
が可能かを確認します。
また、その過程で当たり前ですが変数への書き込みや読み出しなども行っています。
test.cという名前なので、
gcc test.c
とコマンドを実行します。

a
でa.exeを実行します。

本記事の執筆ではここで初めて出ましたが、このように文字化けを起こすことがあります。
エディターの設定によってはコマンドプロンプトとCファイルの文字コードが異なってしまい、このようなことが起こります。
この際は、chcpというコマンドで文字コードを変えると解決します。
UTF-8に変更したいのでchcp 65001と実行します。ほかの場合でも調べれば出てきます。

画面が切り替わりこのようになれば成功です。
改めて、
a
と実行します。

入力した、qwertyという文字列が、しっかりと変数testに格納されていることが確認できます。
また、現在時刻もしっかりと取得できていますね。(コンパイルしてから実行までにタイムラグがあるので数秒ずれていますがコンパイルしたときの時間がしっかり取得できています。)

test_write.txtが作成されて、中にqwertyが書き込まれているのも確認できました。
今までWindowsで何回もMinGWを使ってC言語プログラミングをしてきましたが、特に不具合や動かないといったことはありませんでした。
怪しいコードを書いてるとLinuxでの環境と若干挙動が違うところはあったりしますが、正しくコードを書く分には正しく動いてくれます。
test1
本記事の内容とそれるのであまり大きくは触れませんが、Linuxであればもっと簡単に導入できます。
Ubuntuで説明すると、
sudo apt install gcc
とコマンドを実行し、gccを導入します

環境によっては画像のようにgccをプリインストールしており、導入すら必要ない場合もあります。
次に、nanoなどのエディターでテスト用のcファイルを作ります。

nano helloworld.c
でCファイルを作成し、コードを書き、Ctrl + Oで保存します。

gcc helloworld.c
と実行し、コンパイルします。
a.outという実行ファイルが作成されるので、
./a.out
とコマンドを実行し、a.outを実行すれば、このようにHelloWorldと表示されます。
ユーザー層の関係で、Linuxのほうがこういった環境には強いようですね。
すでにWSLを導入済みであれば、WSL上でC言語の開発環境を構築するほうが簡単だったりするかもしれません。
まとめ
今回は、WindowsでC言語の環境を整える方法を解説しました。
ぜひ、Windowsでの素晴らしいC言語ライフをお楽しみください。