Visual Studio CodeでC言語プログラミングを始める(Windows編)

Visual Studio Codeのロゴ C言語初級

Python全盛の今ですが、C言語を学び始める方も多いのではないかという管理人の勝手な憶測のもと、WindowsのVisual Studio CodeでC言語プログラミングを始めるベストな方法をご紹介します。端的に言うと再生ボタンを押してgccコンパイル&実行の環境が欲しい方向けの記事です。
※初心者向けに手取り足取り説明しています。(たぶん)

この下にある目次を見ると非常に長くて「げげっ」っと思うかもしれませんが、初めての方でも迷わないように詳細に解説しましたので、ぜひ頑張ってみてください。

インストールが必要になるソフト

まずは何を自分のパソコンにインストールすべきか?という部分からお話しします。

1.C言語コンパイラ(gccコンパイラ)
2.エディタ(Visual Studio Code)

この2点です。
早速インストールしましょう。

WindowsパソコンならCコンパイラさえインストールすれば、あとはメモ帳でプログラムを書いてコマンドプロンプト上でコンパイル(プログラムを実行形式ファイルにすること)すれば作ったプログラムを実行することができます。しかし、メモ帳では行番号表示や入力支援機能がない、コマンドプロンプトでのコンパイルではメモ帳⇔コマンドプロンプト間の切り替えが何度も発生するので煩わしい、など慣れてくると面倒に感じます。
Visual Studio Codeを使えば1つの画面でプログラム作成+コンパイル+実行が可能です
大規模な統合開発環境としてVisual Studioというものもあるのですが、ソフトの起動も重いし、ちょっと気軽にプログラミングといった感じではなくなるので、Visual Studio Codeがおすすめです。Visual Studio Codeを使えば雑用が減ってプログラミングそのものに集中できる、と言いかえることもできます。

C言語コンパイラをインストールする

実はC言語コンパイラにも色々な種類があります。ここは代表的なCコンパイラであり、フリーで一番導入が簡単なgccコンパイラを使います。

導入が簡単と言いましたが、初心者には語弊があるかもしれません。《他のコンパイラと比較して》gccコンパイラは導入が簡単という意味です。導入には面倒な作業があるかとは思いますが、以下の手順通りに済ませれば大丈夫です。頑張りましょう!

詳しい手順は以下のリンクから説明しています。リンク先で解説しているダウンロードインストール利用するための設定を済ませてください。

エディタ(Visual Studio Code)をインストールする

すでにお使いのパソコンにVisual Studio Codeがインストールされている方は本項目を飛ばしてください。

Pythonプログラミングを始めるために書いた記事へのリンクで恐縮なのですが、ほぼ途中まで同じ内容ですので、以下を参考にVisual Studio Codeをお使いのパソコンにインストールしてください。
ただし、以下記事を全て実践する必要はありません。記事内のJapanese Language Pack for Visual Studio Codeの追加の部分まで済んだらこの記事に戻ってきてください。(それ以降はPythonに関しての設定なので…)

※以降この記事でのVisual Studio Codeの呼称は、VsCodeと略します。

C言語プログラミングを楽にするための設定

C/C++機能拡張を導入する

まずは、VsCodeにC言語の予約語や関数名などの予測候補文字列を表示してプログラミングを楽にしてくれるC/C++という機能拡張を導入します。

VsCodeを起動します。
左側の機能拡張ボタンをクリックします。

検索ボックスに「c」と入力すると、C/C++という名前の機能拡張が表示されると思います。(似たような名称が出ますが、Microsoftと表示されていれば大丈夫です)
インストールボタンをクリックしてください。

ボタンがアンインストールの表示に切り替わり、「この機能拡張はグローバルに有効化されています」と表示されていれば機能拡張C/C++のインストールは完了しています。

VsCodeに機能拡張Code Runnerをインストールする

C言語プログラムはそのままでは実行できないので、コンパイルという作業が必要になります。
Windowsのコマンドプロンプト上でこれをしようとすると以下のような文字列を打ち込んでEnterキーを押す必要があります。

例)test.c というCプログラムをコンパイルする場合

gcc -o test test.c

結構これ面倒です。
再生ボタンを押せば、コンパイル&実行を一度にやってくれるVsCodeの機能拡張 Code Runner をVsCodeにインストールして楽をしましょう。

機能拡張ボタンをクリックして検索ボックスに「code runner」と入力して検索します。
表示されたらインストールをクリックします。

Code Runnerのターミナル設定を変更する

Code Runnerのインストールが完了するとインストールボタンが歯車に変わります。

歯車ボタンをクリックするとメニューが表示されるので、「機能拡張の設定」項目を選択します。

設定ウインドウを下にスクロールして Run In Terminal という項目を探してください。
初期状態では Run In Terminal の項目にチェックが入っていません。クリックしてチェックを入れてください

Code Runnerのデフォルトではプログラム実行時に読み取り専用エディターなるものが開いてしまいC言語で作ったキーボードから入力させるプログラムなどは実行できません。上記は、それを回避するための設定となります。(具体的に言うと、VsCodeでのC言語プログラムの実行をCode Runnerデフォルトの読み取り専用エディターからWindowsのターミナル(Power Shellまたはコマンドプロンプト)に変更する設定です)

Code Runnerのコンパイル設定を変更する(2023-08-08修正)

設定画面から Code-runner: Executor Map の項目を探します。(先ほどの設定したRun In Terminalよりも上にあります)

settings.json で編集 の文字をクリックします。

設定画面の項目は、実際は setting.json というファイルで管理されています。
以下のように “c”: で始まる部分を探し出します。(下図の赤枠部分

“~”, までの文字列を以下の文字列1行と置き換えてください。(最後の半角カンマまで必要です)

"cd $dir && gcc -fexec-charset=CP932 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

置き換えた状態

設定は以上です。Ctrl + S を押して上書き保存してください。
まだうまくいっているか分からないので、すぐにsettings.jsonのタブは閉じずそのままにしておきます。

表示されたファイルは、settings.jsonというVsCodeの設定ファイルです。万が一 settings.json の内容を間違って書き換えたりするとVsCode自体が不安定になるため注意して進めてください。

settings.jsonを上書き後、万が一うまく動作しない場合を考慮してここまでのVsCode設定を以下に示しておきます。そのままsettings.json全てコピーすればCode Runnerでコンパイルができるはずです。(ただしその他の機能拡張を利用していた場合はそちらの設定も消えるので注意してください

{
    "code-runner.executorMap": {


        "javascript": "node",
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
        "c": "cd $dir && gcc -fexec-charset=CP932 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "zig": "zig run",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "php": "php",
        "python": "python -u",
        "perl": "perl",
        "perl6": "perl6",
        "ruby": "ruby",
        "go": "go run",
        "lua": "lua",
        "groovy": "groovy",
        "powershell": "powershell -ExecutionPolicy ByPass -File",
        "bat": "cmd /c",
        "shellscript": "bash",
        "fsharp": "fsi",
        "csharp": "scriptcs",
        "vbscript": "cscript //Nologo",
        "typescript": "ts-node",
        "coffeescript": "coffee",
        "scala": "scala",
        "swift": "swift",
        "julia": "julia",
        "crystal": "crystal",
        "ocaml": "ocaml",
        "r": "Rscript",
        "applescript": "osascript",
        "clojure": "lein exec",
        "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
        "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
        "racket": "racket",
        "scheme": "csi -script",
        "ahk": "autohotkey",
        "autoit": "autoit3",
        "dart": "dart",
        "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
        "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
        "haskell": "runghc",
        "nim": "nim compile --verbosity:0 --hints:off --run",
        "lisp": "sbcl --script",
        "kit": "kitc --run",
        "v": "v run",
        "sass": "sass --style expanded",
        "scss": "scss --style expanded",
        "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",
        "FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "sml": "cd $dir && sml $fileName"
    },
    "code-runner.runInTerminal": true,
    "terminal.integrated.defaultProfile.windows": "Command Prompt"
}

書き換えた部分の文字列にある

-fexec-charset=CP932

の記述は、Windows環境のgccコンパイラでC言語プログラム実行する際の文字コードをShift JISで出力するための設定です。詳しく知りたい方は、こちらを参考にしてください。

Code Runnerの設定は以上です。

既定のシェルをcmd(コマンドプロンプト)に設定する

C言語をコンパイルしたり実行したりするには通常ターミナルを用います。

ターミナルはコマンドラインといって命令をキーボードなどから入力してEnterキーで実行するような環境のことです。Windowsでは、cmd(コマンドプロンプト)やPS(PowerShell)、LinuxやMacOSではTerminal(ターミナル)というアプリが一般的です。

WindowsのVsCodeの場合、このターミナル設定(既定のシェル)がデフォルトでPowerShellとなっています。cmd(コマンドプロンプト)よりPowerShellの方が新しいものですが、コンパイル動作や起動が少々緩慢でかつ初心者には使いやすいとはいえないため、VsCodeでの既定のシェル(既定のターミナル)をcmd(コマンドプロンプト)に変更しておきます。

まず Ctrl + , (カンマ)を押して、設定画面を開きます。
テキストボックスに「terminal default」と入力して検索された中から Terminal > Integrated > Delaut Profile: Windows の項目にある Power Shellの部分をクリックして Command Prompt に変更します。(Power Shellでは駄目という意味ではないです。念のため)

キーボードから Ctrl + @ を押してターミナルを表示して確認します。
cmd のアイコン表示がされていれば設定完了です。

VsCode環境でのC言語プログラム作成から実行までの流れ

ようやくC言語プログラミングを利用できる環境が整いました。(ここからが開始です!)
早速、C言語プログラムを作って実行させてみましょう!…といっても少々準備が必要です。

C言語プログラムを格納するためのフォルダの準備と設定

まずはC言語プログラムを保存するためのフォルダを作ってください。
今回は例としてWindowsのドキュメントフォルダにgccという名前のフォルダを作りました。(お好きな場所に適当な名前のフォルダを作ってください)

フォルダを作らなくてもVsCodeでパソコンの色々な場所にあるC言語プログラムファイルを読み込んで実行することは可能です。しかし、C言語プログラムの保存場所がばらばらだと自身での管理が面倒になってきます。他のプログラミング言語にも言えますが、PythonならPythonプログラム保存用のフォルダ、C言語ならCプログラム保存用のフォルダなどとフォルダ分けして管理した方が、パソコンのファイルを整理整頓できますし、VsCode上でCプログラムをいちいち探す必要がなく楽です。

次に先ほどC言語プログラム用に作成したフォルダをVsCodeに登録します。
メニューから ファイル > フォルダーをワークスペースに追加… を選択してください。

VsCodeで管理したいC言語ソースコード格納用フォルダを選択して追加ボタンをクリックします。(下の画面では例としてドキュメントフォルダのgccフォルダを登録しています)

追加したフォルダは、VsCodeのウインドウ左側に表示されます。

フォルダの準備と設定は以上です。

C言語プログラムを作ってみる

動作確認の意味も込めて、VsCode上でC言語プログラムを作成してみます。
最初のCプログラムは画面に文字が表示されるプログラムです。

hello.c

/* 画面に何か表示するプログラム */
#include <stdio.h>
int main(void)
{
	printf("C言語は習うより慣れよ\n");
	return 0;
}

実行イメージ

C言語は習うより慣れよ

通常はこうした最初の動作確認プログラムに printf(“Hello, world!\n”); (5行目)のような半角英字を用いることが多いのですが、あえてマルチバイト文字の日本語を使って printf(“C言語は習うより慣れよ\n”); という文字列にしました。理由は、先ほどのVsCodeの設定がうまくいっているか確認するためです。もし実行結果で文字化けしているようであれば、C言語プログラミングを楽にするための設定の部分を見直してください。

先ほど追加したフォルダ上で 右クリック > 新しいファイル を選択します。

C言語のプログラムは拡張子が.cとなります。今回はファイル名を「hello.c」としました。

ファイルを作成すると右のエディターウインドウにカーソルが点滅し入力可能となります。
1と行番号が表示されています。先ほどのCプログラム hello.c を入力してみてください。

入力後のイメージ

プログラム入力の注意点

・「画面に何か表示するプログラム」と「C言語は習うより慣れよ」の部分は、全角文字です。それ以外は全て半角文字となります。プログラムは基本が半角文字であると考えてください。
5行目と6行目の空欄部分はスペースを沢山入力せずに、TABキーを1回入力して空欄を入力しますこれを字下げと呼んでいます。
・5行目の「\n」という部分は、キーボードから半角文字で「¥n」と入力してください。
・3行目の intmainの間、6行目の return0の間にはそれぞれ半角スペースを入れてください。

プログラムを上書き保存する

VsCodeでは未保存の項目はファイル名の横に●がつきます。
また左側のファイルアイコンには、未保存のファイル数が表示されるようになっています。

次の手順に移る前にキーボードの Ctrl + S でプログラムファイルを上書き保存しておきます。

プログラムのコンパイルと実行

通常、作成したCプログラムは、

1.コンパイル
2.実行

といった手順で実行確認をします。プログラムをいきなり実行できるわけではなく、プログラムをコンパイルして実行形式のファイルを作ってから実行となるわけです。
VsCodeと機能拡張の Code Runner をインストールした環境であればこれを再生ボタン1つで済ませることができます。(今回の開発環境で一番楽ができる部分がまさにここです!)

VsCodeの右上にある再生ボタンをクリックします。

VsCode下にターミナルウインドウが表示され自動的にコンパイル+実行結果を出力してくれます。

hello.cのVsCodeでの実行イメージ

Windowsで日本語文字「C言語は習うより慣れよ」が表示されない方

試しにprintfの部分を

printf("Hello!\n");

などと半角文字の出力で試してみてください。
もしうまく「Hello!」と表示されていれば文字コード部分の設定に問題がある可能性があります。

Code Runnerの設定を行うの項で行った「-fexec-charset=CP932」の部分を外してみてください。うまくいく場合があります。
※Windows Subsystem for Linux(WSL)環境をインストールされていた方で「-fexec-charset=CP932」を外したら全角文字が表示されるようになった事例があります。

ターミナルにコンパイルエラーが表示された場合

先ほどの例はコンパイルが問題なく終了した例ですが、もしプログラムに入力ミスや間違いなどがあると以下のような形でターミナルウインドウにコンパイルエラーが出力されます。

エラーメッセージが出ると何か悪い事をしでかしてしまったような気になりますが、気にしないでください。エラーメッセージはプログラミングを上達させる手助けをしてくれます。

エラーメッセージ部分をよく見て下さい。
上記の例だと以下の部分が重要です。

hello.c:5:45: error: expected ‘;’ before ‘return’

hello.c はファイル名です。その後に続く 5:45 の数値は、「5行目の45文字目あたりが怪しいよ」といったエラーメッセージになります。もっともこのエラーメッセージの場合その後の error: に続く expected ‘;’ before ‘return’ の記述で ‘;’ が含まれているので、C言語特有の命令の最後に ; (セミコロン)を付け忘れているのかな、と予想がつきます。

ちなみにプログラムにエラーが見つかって修正する作業の事を デバッグ といいます。

【重要】コンパイルエラーに対する心構え

大事な点なので、もう少しデバッグ作業コンパイルエラーについてお話しておきます。

初心者がプログラミングで一番時間を費やす部分がデバッグ作業だったりします。管理人は初心者ではないですが、いまだにデバッグに時間が掛かります。(じゃあ、初心者じゃん!などと言わないでください)

コンパイルエラーの英語のメッセージを読みたくないという人も多いと思います。
その場合は、コンパイルエラー時のファイル名に続く行番号部分に注目してください。先ほどの例で言えば、hello.c:5:45 のような部分。

エラーが起きている行数が分かれば、まずはその行にエラーがないかチェックします。その行になければ1つ上の行をチェックします。プログラムは上から下に流れるので、エラーが起きている行数かその行より上をチェックするようにします。大抵のエラーは、エラーが起きている行かその1つ上の行で問題があるからです。

そしてコンパイルエラーの多くは入力ミスです。自分では正しいと思って入力しているので、見逃しがちなのです。入力ミスは、エディターに指定したフォントが原因になる事もあります。例えば、大文字のアイと小文字のエルが同じく見えてしまうようなフォントを使っていると入力ミスに気が付きません。(ちなみにWindowsだとメイリオMonacoあたりがおすすめです)

学生の作ったプログラムを見ていると全角文字をプログラム中に入力してしまいコンパイルエラーとなっていることも多いです。コメント文の中やprintf関数の の後に全角文字を入力後、そのまま全角で入力を続けてしまっている例がありました。

わたしはプログラミングで挫折する一番の原因はデバッグ作業でプログラミング嫌いになることだと思っています
自分の入力ミスに自分で気づけるようになれば自然とプログラミングは上達していきます

まとめておきます。

コンパイルエラーに対する心構え

1.エラーが出た行、またはその上方の行に間違いがある
2.エラーは自分の入力ミスがほとんど
3.アルファベットが区別しやすいフォント設定にしてあるか?
4.変な場所に全角文字がまぎれていないか?

以上、長々とおつきあい頂きありがとうございました。
WindowsのVisual Studio CodeでC言語プログラミングを始めるベストな方法を終わります。

プログラミングは、《 習うより 慣れよ 》です!

Amazonで「C言語」の本を検索 >>

追記:デバッガ―を使いたい場合の設定方法

デバッグの開始(F5キー)またはデバッグなしで実行Ctrl + F5)を利用したい方は以下リンク記事を参考に設定してみてください。

参考

コメント

  1. a より:

    質問失礼します。visual-studio-codeでc言語プログラミングを始める(windows編)というページで、C言語プログラム実行時の文字化け対策を行った(文字列「gcc」の後に「-fexec-charset=CP932」という文字列を追加)のですが、再生ボタンを押した時に日本語が文字化けしてしまいます。この時どのような対策を講じればよいでしょうか?

    • dennou より:

      a さん、こんばんは。管理人です。
      文字化けの件で一度確認をお願いしたいのですが、次のようなプログラムを実行した場合は実行ができますでしょうか?

      #include <stdio.h>
      int main(void)
      {
          printf("Hello!\n");
          return 0;
      }

      上記プログラムで「Hello!」と表示されたら、次のプログラムではどうでしょうか?

      #include <stdio.h>
      int main(void)
      {
          printf("C言語は習うより慣れよ\n");
          return 0;
      }

      実行した際、「C言語は習うより慣れよ」と表示されずに「C����͏K����芵���」のような感じで文字化けしていたら、同記事の4.4の項目「Code Runnerのターミナル設定を変更する」の設定を見直してみてください。

      この設定がされていないとコンパイル&実行はできますが、文字化けして表示されてしまいます。

  2. a より:

    管理人さん、返答ありがとうございます。記事の4.3と4.4の項目を見直してみたのですが改善しませんでした。「Hello!」と出力はできますが「C����͏K����芵���」と出力されます。

    以下はターミナルの出力結果です。
    owner@PC:~/suport/C$ cd “/home/owner/suport/C/” && gcc -fexec-charset=CP932 start.c -o start && “/home/owner/suport/C/”start
    C����͏K����芵���

  3. a より:

    管理人さん、前にした質問ですが、setting.jsonの「“code-runner.executorMap”:」を削除すると文字化けが解消しました。回答していただきありがとうございました!

    • dennou より:

      a さんこんにちは。
      管理人です。うまく動作したようでまずは良かったです!

      送って頂いたターミナルの出力結果から察するにお使いのOS環境はWindowsではなくLinux環境でしょうか?
      LinuxやMacOSであれば、Code Runnerの設定で「-fexec-charset=CP932」を追加する必要はなくなります。

      そもそも「-fexec-charset=CP932」はWindows環境でデフォルトの文字コードであるShift-JISで実行するためのコンパイルスイッチだったので、Windows以外の環境であれば大抵文字コードがUTF-8で処理されているので、「-fexec-charset=CP932」を追加する必要がなくなります。

      ともあれ良かったですね。

  4. VS君 より:

    エディタ類を使用するは初めてです。
    例題を実行してみたのですがいくつか疑問が生じてしまいました。
    質問させてください。

    疑問(1)ターミナル欄が実行前は1:PowerShell、実行後は2:Codeに変化するがこれはなに?
    疑問(2)printfの引数に\nを入れているのですが実行結果は改行されず(\入力したがリストは逆スラッシュになってしまう)
    疑問(3)実行結果の前に出ているメッセージ中のif($?)はなに?

    以下が実行結果の画面をコピペしたものです。

    Windows PowerShell
    Copyright (C) Microsoft Corporation. All rights reserved.

    新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

    PS C:\Users\****\Documents\gcc> cd “c:\Users\****\Documents\gcc\” ; if ($?) { gcc -fexec-charset=CP932 kanji.c -o kanji } ; if ($?) { .\kanji }
    C言語は習うより慣れよ
    PS C:\Users\****\Documents\gcc>

    以上よろしくお願いいたします。

    • dennou より:

      VS君さん(「君」に「さん」をつけるのも変か!)こんばんは。管理人です。

      わたしはC言語環境を入れる前からVisual Studio Codeを使っていたので、すんなり出来ていましたが、もしかすると「既定のシェル」の設定を自分で変えていたのかもしれません。
      どうやらVisual Studio Codeは既定のシェルがPS(Windows Power Shell)というものになっているらしく、
      今回のC言語環境では既定のシェルをcmd(コマンドプロンプト)にしておく必要があるようです。

      VS君さんからいただいた疑問(1)~(3)は全て既定のシェルをcmdに変更することで解決するはずです。

      変更方法を動画でアップしましたので既定のシェルを変更してみてください。(動画ではあえてVS君さんと同じエラーメッセージを出した状態から変更しています)

      動画URL(既定のシェルを変更する方法)
      https://youtu.be/qKf_oqvX164

      Visual Studio Codeは、最初に使うエディタとしては、手ごわいソフトです。
      でも使いこなせるときっと大きな力になるはずです。

      • VS君 より:

        管理人様

        ご丁寧に動画までアップしていただきありがとうございます。

        早速その通りcmdにしたところ問題の現象が解消しました。
        あっけない結果でしたが、奥が深そうで私には理解不能です。
        とは言え、これでgccを使える環境が整いました。

        >>Visual Studio Codeは、最初に使うエディタとしては、手ごわいソフトです。

        もっと簡素で、ソースを実行できるエディタってないんですかね。

        • dennou より:

          解消できて良かったです。
          WindowsのPS(パワーシェル)は、cmd(コマンドプロンプト)の後継なのですが、使える命令が微妙に違うので、こういったことが起こりがちです。
          Microsoftは、ユーザにPSの方を使わせたい感じですね。

          >> もっと簡素で、ソースを実行できるエディタってないんですかね。

          一番簡単なエディタはWindows標準に添付のNotepad(メモ帳)かも。

          メモ帳でC言語のプログラムを保存して、コマンドプロンプト上でgccでコンパイルして実行、といった手順でも十分C言語プログラミングができます。
          最近は、Visual Studio Codeをよく利用しますが、それまでは秀丸というシェアウエアのエディタを愛用していました。(というか今もしている)

  5. VS君 より:

    サポートありがとうございました。
    とても勉強になりました。

    並行作業でTeraPadというエディタを触ってみました。
    私にはこれくらいがいいです。
    このTeraPadとコンパイラを連動させている例がネット上に二つありました。
    一つは対象がVisual-C、もう一つはmingwでしたがこちらは実行ファイルを一般公開していません。

    Cの学習だし、コマンドプロンプトで十分なんだけど、私はタイプミスが多くてイラつくんですよね。

    • dennou より:

      TeraPadいいですね。シンプルですし。
      わたしもエディタに関しては色々と使ってみてようやく落ち着いてきた感じです。

      質問頂いたおかげでわたしも勉強になりました。ありがとうございました。

  6. 初心者 より:

    このサイトの手順通りにやってみたのですが実行結果が微妙に異なってしまいます。if ($?)というのは何かがうまくいっていないのでしょうか。下に実行結果を載せます。

    PS C:\Users\81809\Documents\gcc> cd “c:\Users\81809\Documents\gcc\” ; if ($?) { gcc -fexec-charset=CP932 hello.c -o hello } ; if ($?) { .\hello }
    C言語は習うより慣れよ

    また、実行時にhello.exeというファイルが作成されるのですが、「このファイルはバイナリか、サポートされていないテキストエンコードを使用しているため、エディターに表示されません」と出て無理に開くと完全に文字化けしてしまっています。これはどうしてなのでしょうか。

    • dennou より:

      初心者 さん、こんにちは。管理人です。

      つい2日間にこの記事のコメント欄で同じ質問がありまして、どうやら既定のシェルがPS(Windows Power Shell)だとこのメッセージがでるようです。
      既定のシェルをcmd(コマンドプロンプト)に設定しなおすとif($?)…という表示がきえ通常の実行になるはずです。

      以下の動画で既定のシェルをコマンドプロンプトに変更していますので、設定しなおしてみてください。
      動画では実行して同じエラーメッセージを出した状態から変更する操作をしています。

      動画URL(既定のシェルを変更する方法)
      https://youtu.be/qKf_oqvX164

      > 実行時にhello.exeというファイルが作成されるのですが、「このファイルはバイナリか、サポートされていないテキストエンコードを使用しているため、エディターに表示されません」と出て無理に開くと完全に文字化けしてしまっています。これはどうしてなのでしょうか。

      こちらの質問は状況がよくわからないのですが、hello.exeをダブルクリックして実行したら上記のエラーが表示されるという意味でしょうか?

      • 初心者 より:

        管理人様 返信遅れてしまい申し訳ないです。
        同じ質問というのは、たぶん自分のせいかと、、1回目に送ったときにコメント欄に表示されなかったので時間をおいて、もう一度送らせていただきましたw お騒がせしてしまい申し訳ありません。。

        わざわざ動画にしていただき、本当にありがとうございます!!
        PSについては解決しそうです!

        > 実行時にhello.exeというファイルが作成されるのですが、「このファイルはバイナリか、サポートされていないテキストエンコードを使用しているため、エディターに表示されません」と出て無理に開くと完全に文字化けしてしまっています。これはどうしてなのでしょうか。

        実行すると、hello.cの下にhello.txtというファイルが勝手に作られて、中にはこのコメントが書かれているという状態です。「このまま開きますか?」というところをダブルクリックすると完全に文字化けしてしまっているという状態です。

        • dennou より:

          こんばんは。初心者さん。

          > 実行時にhello.exeというファイルが作成されるのですが、「このファイルはバイナリか、サポートされていないテキストエンコードを使用しているため、エディターに表示されません」と出て無理に開くと完全に文字化けしてしまっています。これはどうしてなのでしょうか。

          コンパイルを行うとhello.cであればhello.exeという実行ファイルが作成されます。
          このhello.exeをターミナル上で実行までしてくれるのがCode Runnerの機能なので、VsCode上でhello.exeを選択して何かするということは必要ないです。(hello.exeのファイルが作成されていれば問題ないということです)

          通常拡張子が~.exeのファイルは中身を見ようとすると文字化けして見ることができません。
          これはバイナリファイルといってコンピュータしか理解できないファイルです。
          だから初心者さんの言うように「文字化けして」当然です。

          ~.c → C言語プログラム(人間が理解できる)
          ~.exe → 実行ファイル(コンピュータが理解できる)

          とでも憶えてください。

          hello.txtが作成されたということですが、一度右クリックして削除して再度作成されないようであれば問題ないです。

  7. k より:

    質問失礼します。

    文字化け対策の入力時(「gcc」の後「-fexec-charset=CP932」文字列を追加)した際に、以下のエラーが発生します。

    発生場所 行:1 文字:36
    + cd “c:\Users\s134472\Desktop\gcc\” && gcc -fexec-charset=CP932 hello.c -o hello …
    + ~~
    トークン ‘&&’ は、このバージョンでは有効なステートメント区切りではありません。
    発生場所 行:1 文字:81
    + … llo.c -o hello && “c:\Users\s134472\Desktop\gcc\”hello
    + ~~
    トークン ‘&&’ は、このバージョンでは有効なステートメント区切りではありません。
    発生場所 行:1 文字:84
    + … .c -o hello && “c:\Users\s134472\Desktop\gcc\”hello
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    式は、パイプラインの最初の要素としてのみ許可されます。
    発生場所 行:1 文字:115
    + … 2\Desktop\gcc\”hello
    + ~~~~~
    式またはステートメントのトークン ‘hello’ を使用できません。
    + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : InvalidEndOfLine

    別サイトで、「code-runner.executorMap」内の「setting.json」について「&&」の箇所(形23カ所)を「-and」に置換すると、次に以下のエラーメッセージが発生します。

    (変更前)
    “c”: “cd $dir && gcc -fexec-charset=CP932 $fileName -o $fileNameWithoutExt -and $dir$fileNameWithoutExt”,
    (変更後)
    “c”: “cd $dir -and gcc -fexec-charset=CP932 $fileName -o $fileNameWithoutExt -and $dir$fileNameWithoutExt”,

    (参考サイト)
    http://tooljp.com/language/powershell/html/Token-is-not-a-valid-statement-break-in-this-version.html

    (エラーメッセージ)
    Set-Location : パラメーター名 ‘o’ があいまいなため、パラメーターを処理できません。一致する名前の候補は次のとおりです: -OutVariable -OutBuffer。
    発生場所 行:1 文字:74
    + cd “c:\Users\s134472\Desktop\gcc\” -and gcc -fexec-charset=CP932 hello.c -o hell …
    + ~~
    + CategoryInfo : InvalidArgument: (:) [Set-Location]、ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameter,Microsoft.PowerShell.Commands.SetLocationCommand

    別のパソコンでは、「&&」を「-and」に置換したあと、setting.jsonの「“code-runner.executorMap”:」を削除することで、問題を解決できています。ちなみに、現使用パソコン、および、別のパソコンはどちらもOSはWin8.1です。

    よろしくお願いします。

    • dennou より:

      k さん、こんにちは。管理人です。
      WindowsでのVsCodeではターミナルの設定がデフォルトでPS(PowerShell)になっているようで、gccでコンパイルする際、色々と問題が発生します。(わたしも当初このことに気づいていませんでした)

      まずはgccでコンパイルする際、cmd(コマンドプロンプト)を使うようにする必要があります。

      本日記事を追記したので、まずは既定のシェルの設定をcmd(コマンドプロンプト)にしてみてください。

      既定のシェルをcmd(コマンドプロンプト)に設定する【2021.02.16追記】

      上記の設定は、前項目の「C言語プログラミングを楽にするための設定」が全て終了していることが前提となります。
      お話から察するに、すでにkさんの方で変更した「&&」→「-and」を再度「-and」→「&&」に置換しなおす必要があると思います。

      • クマ より:

        Run In Terminalという項目にチェックを入れるとユーザー設定に書き込めません。ユーザー設定を開いてファイル内のエラーを修正してからもう一度お試しくださいと出てきてしまいます。どうしたらいいでしょうか。また

        • dennou より:

          クマさんお早うございます。管理人です。

          おそらくRun In Terminalのチェックを入れる前に書き換えた設定の段階で必要な文字を消してしまっている可能性があります。

          「ユーザ設定に書き込めません…」のエラーメッセージが表示された際、「設定を開く」というボタンが表示されるかと思います。このボタンをクリックして設定をひらき、間違っている箇所を修正する必要があります。

          settings.jsonというファイルが開くことになりますが、このファイルはJSON形式といって例えば次のような形式です。

          “doubutu”: {
          “name1”: “キツネ”,
          “name2”: “タヌキ”,
          “name3”: “ネコ”,
          },
             :
          よくあるのは「,」(半角カンマ)や「”」(ダブルクォーテーション)を付け忘れたり、消してしまったりする例です。
          「:」(コロン)なんかも間違って「;」(セミコロン)で入力してしまったりとかもあります。

          Code Runnerの設定のとき「-fexec-charset=CP932」などの文字列を追加したかと思いますが、その際必要な文字列を消してしまった可能性などがあります。
          もう一度ユーザ設定ファイルを見直してみてください。

          一応修正イメージを動画にしたので参考にしてください。(動画の例では「,」を付け忘れている例です)

          https://youtu.be/8w5OGjsjba8

        • クマ より:

          いらない文字を追加してしまっていました。この手順通りに進めて実行までできました。ありがとうございます!

      • k より:

        管理人 様
        コメントありがとうございます。

        「&&」→「-and」を再度「-and」→「&&」に置換しなおし、既定のシェル設定でPSを削除してcmdに設定しました。
        次に、コンパイルを実行すると、

        ターミナルの所が、『2:Code』となり、以下のエラーメッセージが表示されます。

        C:\Users\s134472\Desktop\gcc>cd “c:\Users\s134472\Desktop\gcc\” && gcc -fexec-charset=CP932 tempCodeRunnerFile.c -o tempCodeRunnerFile && “c:\Users\s134472\Desktop\gcc\”tempCodeRunnerFile
        ‘gcc’ は、内部コマンドまたは外部コマンド、
        操作可能なプログラムまたはバッチ ファイルとして認識されていません。

        また、「gcc」フォルダの所に「Hello.c」ファイルの次に「tempCodeRunnerFile.c」が追加され、そのファイル内には1行だけ

        #include

        が表示されています。

        よろしくお願いします。

        ※すみません、下のコメントは余分のため、削除を希望します。

        • dennou より:

          こんばんは kさん。管理人です。

          > ‘gcc’ は、内部コマンドまたは外部コマンド、
          > 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

          このエラーメッセージはgcc.exeというコンパイラアプリへのWindowsのパス設定がされていない状態です。

          一応お聞きしますが、gccコンパイラはインストールされていますか?
          もしインストールがまだであれば、C言語のコンパイルや実行ができません。
          以下を参考にgccコンパイラをインストールしてください。

          WindowsにC言語開発環境(gccコンパイラ)を導入する

          あるいはすでにgccコンパイラをインストール済みであれば、単にgcc.exeへのWindowsのパス設定がされていない状態ですので、上記リンク先内の「MinGWをコマンドラインから使うための設定」の項目にあるPath設定をしてみてください。

          あと、tempCodeRunnerFile.cのファイルに関しては機能拡張のCodeRunnerが吐き出した不要なファイルなので削除してしまっても構いません。おそらくきちんとgccでコンパイルが出来ていないため残ってしまったファイルかと思われます。
          頑張ってみてください。

          • k より:

            管理人様

            コメントありがとうございます。
            現在、「MinGWのインストール」が完了しています。

            次の「MinGWをコマンドラインから使うための設定」で、サイトの説明ではOSがWin10での設定?の様なのですが、OSがWin8.1と言う事もあり、環境変数の入力の画面が違うため、ここで設定が止まってしまっています。

            ユーザーの環境変数の所に
            変数”Path” 値”・・・(CドライブにもPath入っている様な表示)”はあります。

            そこで、「新規」をクリックすると、新しいユーザー変数と表示され、
            変数名(N):”入力画面”
            変数値(V):”入力画面”
            の事が聞かれます。

            上記の、変数名および変数値には、何を入力すれば良いのでしょうか。
            以前、Pathに

            C:\MinGW\bin

            に近い形を入力すると、Pathの所が全部消えた事があり、この入力で良いのか自信がありません。

            ここが解決できると、
            「ファイル名を指定して実行」→「cmd」の話に進められそうな感じです。

            よろしくお願いします。

          • dennou より:

            こんばんは k さん。
            Windows8.1は環境変数の設定画面が違うのでしたね。失礼しました。

            【Windows8.1の場合】
            1.ユーザーの環境変数の所にすでに変数Pathが存在している場合は、「編集…」ボタンをクリックします。
            2.変数名の項目が「Path」となっているかと思います。変数値の項目はおそらくテキストボックスに入りきらないくらい文字列が並んでいるので、そのテキストボックスの一番最後までカーソルを移動します。(要するに変数値に入力済みの内容は消さないようにします)
            3.変数値の一番最後の文字が「;」であれば、その後に「C:\MinGW\bin;」を追加してOKボタンを押します。最後の文字が「;」出ない場合は「;」を最後に追加してから「C:\MinGW\bin;」を追加してOKボタンを押します。

            ちなみに「;」は複数のパスをつなげる役割があるので「c:\Windows」と「C:\MinGW\bin」をつなげる場合、「c:\Windows;c:\MinGW\bin;」などとなります。
            最後に「;」を入れておくと次回別のパスを追加する際、間違いがないです。
            パス名や「;」の前後などにスペースは入れないでください。

            あと一応CドライブのMinGWフォルダ内にあるbinフォルダの中にgcc.exe(gccコンパイラ本体)が存在しているかも確認しておいてください。

  8. k より:

    管理人様

    ご連絡ありがとうございます。
    昨日の助言の操作の通りに作業をしました所、コマンドプロンプトの実行で、設定通りにできました。

    ”入力画面”←テキストボックス

    の所も説明があり、拙い表現での質問だったにも関わらずありがとうございました。
    これで、一通りのプログラム作業ができるかと思います。

    また不明な点がありましたら、よろしくお願いします。

  9. 薬師寺 より:

    出力結果に
    ‘gcc’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません

    とあり結果が出力されませんでした。
    gccコンパイラはインストール済みで、コマンドプロンプトでのgccコンパイラバージョン表示もなりました。
    何をすればいいかわかりません!よろしくお願いします。

  10. 薬師寺 より:

    すみません先ほどコメントさせていただいたのですが再起動したらなりました!!
    お恥ずかしい限りです…(笑)ほんとにごめんなさい。
    とにかくC環境出来てよかったです!ありがとうございました。

    • dennou より:

      管理人です。良かったですね。
      パス設定などをする前からターミナルを開いていたりすると一旦ターミナルを終了してからでないとこういったメッセージがでることがあります。

  11. ラット18号 より:

    管理人様

    質問させていただきます。
    デスクトップ上にc_testというフォルダを作り、その中にhello.cを保存し、vscode上で実行しましたが以下のエラーメッセージが表示されます

    C:\Users\user\Desktop\c_test>cd “c:\Users\user\Desktop\c_test\” && gcc fexec-charset=CP932 hello.c -o hello && “c:\Users\user\Desktop\c_test\”hello
    gcc: error: fexec-charset=CP932: No such file or directory

    どのように対処したらよいでしょうか。

    • dennou より:

      ラット18号 さん、こんばんは。
      管理人です。

      エラーメッセージから察するに対象記事での「Code Runnerの設定を行う」の項での設定が間違っています。

      gccの後に追加する文字列「-fexec-charset=CP932」の先頭の「」(ハイフン)が抜けています。
      もう一度設定を見直してみてください。

  12. ラット18号 より:

    管理人様

    こんばんは、ラット18号です。

    ハイフンが抜けていました。このようなことでお手数をおかけして申し訳ございません。
    今後もサイトの方を参考にさせていただきます。

    • dennou より:

      ラット18号さん、解決できて良かったです。
      ちょっとしか事かもしれませんが、この「ちょっとした事」に自分で気づくようになると何でも上達しますんで頑張ってみてくださいね!

  13. kiryu より:

    管理人様

    質問失礼します。
    デスクトップ上にgccというフォルダを作り、その中にhello.cを保存し、vscode上で実行しましたが以下のエラーメッセージが表示されます

    Microsoft Windows [Version 10.0.19041.928]
    (c) Microsoft Corporation. All rights reserved.

    C:\Users\kaoru\others\Documents\gcc>cd “c:\Users\kaoru\others\Documents\gcc\” ; if ($?) { gcc -fexec-charset=CP932 hello.c -o hello } ; if
    ($?) { .\hello }
    ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。

    似たような質問をお見受けしたのですが、「既定のシェルの選択」はなくかわりに「既定のプロファイルの選択」でcmdを選択したのですが、反映されません。
    どのように対処したらよいでしょうか?

    • dennou より:

      kiryu さん、こんばんは。管理人です。

      どうやらつい最近アップデートしたVisual Studio CodeのバージョンApril 2021 (version 1.56)からターミナルの扱いが変更になっているらしく、以前まで表示されていた「既定のシェルの選択」という項目が消えてしまいました。
      「既定のプロファイルの選択」でcmdを指定してもうまくいかないようです。わたしもVsCodeをアップデートしたら同じ現象になりました。むしろ連絡して頂きありがとうございました!

      最新バージョンのVisual Studio Codeでは非推奨となってしまいましたが、以下の設定を試してみてください。
      1.メニューの ファイル > ユーザー設定 > 設定を開く(Ctrl+,でも同じ)
      2.右上のRun Codeボタン(再生アイコンのボタン)の右隣りにある設定(JSON)を開くボタンをクリックしてsettings.jsonファイルを表示
      3.“code-runner.executorMap”: {…の上あたりの場所でいいので、以下の文字列を追加する

      "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",

      4.settings.jsonを上書き保存

      わたしの場合はこれでうまくいきました。ただしこの設定は非推奨なのでターミナルウインドウに問題として表示されます。一時的な対処になりそうですが今のところ他の方法が見つかりません。

      上記手順の動画を参考にアップしたので参考にしてみてください。

      https://youtu.be/hCwV0alLE6I

      • kiryu より:

        管理人様

        kiryuです。返信ありがとうございます!
        言われたとおりにやったらできました。わざわざ動画までつけていただき感謝しかないです。
        また何かございましたらよろしくお願いいたします‼

  14. ぽんちゃん より:

    はじめまして!
    環境を作成する際にこちらの記事を参考にさせていただきました。ありがとうございます。
    さて、”terminal.integrated.shell.windows”: “C:\\WINDOWS\\System32\\cmd.exe” 
    (すいません、コードスニペットの記述方法がわかりませんでした。)の設定についてですが、非常に参考になるかと思われるWebページを発見したので載せておきます。
    完璧な回答とは言い難いかもしれませんが、参考になれば幸いです。

    https://qiita.com/take_me/items/47f192a126d75a9264a9

    • dennou より:

      ぽんちゃん さんこんにちは。
      管理人です。

      教えて頂いた

      ”terminal.integrated.shell.windows”: “C:\\WINDOWS\\System32\\cmd.exe”

      の設定についてのこちらのリンク非常に参考になります。(わたしもまだよく分かっていないですが…)
      もうちょっと勉強してみます。ありがとうございました!

  15. tuzu より:

    管理人様
     
    このページを参考にVScodeをインストールさせていただきました。

    「C言語を作ってみる」の項でprintfの中身を「習うより慣れろ」とすると以下のように文字化けした出力となります。「hello」では文字化けしませんでした。

    C:\Users\***\Documents\gcc>cd “c:\Users\***\Documents\gcc\” && gcc -fexec-charset=CP932 hello.c -o hello && “c:\Users\***\Documents\gcc\”hello
    ɂ

    「C言語を楽にするための設定」は何度も確認させていただきましたので、間違いの可能性は低いかと思います。

    なにか改善策がありましたらご教授いただけませんでしょうか。
    よろしくお願いいたします。

  16. tuzu より:

    先ほど文字化けに関する質問をさせていただいた者です。

    今までのコメントに「-fexec-charset=CP932を削除するとできた」という事例があったので、これを試したところ文字化けせずに出力されました。
    私のOSはWindowsですが、Windows subsystem for Linuxをインストールしていたら「-fexec-charset=CP932 」は不必要となるのでしょうか?

    • dennou より:

      tuzuさん、お早うございます。管理人です。
      まずは良かったです。

      > 私のOSはWindowsですが、Windows subsystem for Linuxをインストールしていたら「-fexec-charset=CP932 」は不必要となるのでしょうか?

      ご指摘のWindows Subsystem for Linux(WSL)ですが、関係があるかもしれません。
      gccコンパイラの「-fexec-charset=CP932」スイッチは、VSCode上でUTF-8で入力したC言語プログラムを
      実行ファイル生成時にシフトJISでの実行とするためのスイッチです。

      なんでそんなことをしているかと言いますと、WindowsのコマンドプロンプトではシフトJISでの入出力が基本だからです。
      通常日本語のWindowsOSでは入出力にシフトJISが使われています。

      WSLをインストールするとLinux標準のUTF-8でプログラムが動作するものがあるのかもしれません。(この部分詳しくは分かりませんが)
      Windowsでも色々な環境の方がいるのでtuzuさんのご指摘はなかなか興味深い意見でした。ありがとうございました。

      参考
      https://www.atmarkit.co.jp/ait/articles/1711/09/news032_3.html

  17. 匿名 より:

    すみません,vscodeは普段texで使っているのですが,「Executor Map」という項目を探し出し、settings.json で編集 の部分をクリックすると開かれたjsonファイルに既に「”latex-workshop.latex.うんたらかんたら」と確かどこかからコピペしたものが貼ってあり...初期設定を検索してもヒットせず詰んでいます.助けてください.

    • dennou より:

      管理人です。
      TeXに関してはわたしは使ったことがないのですが、latex-workshop.latex.うんたらかんたら(?)は、VsCodeにLaTeXの統合環境を追加する機能拡張のようですね。

      以下のリンクに解説があるようです。

      TeX Wiki
      https://texwiki.texjp.org/?Visual%20Studio%20Code%2FLaTeX#mccdb80b

      補足ですが、VsCode設定ファイルのsettings.jsonは、1文字でも間違っていると動かなかったり設定できなかったりするので気を付けてください。

      JSON形式の基本形式例

      “doubutu”: {
      “name1”: “キツネ”,
      “name2”: “タヌキ”,
      “name3”: “ネコ”,
      },

      上記の「,」や「:」が抜けていたり、「”」などが対になっていなかったりすると設定が反映されなかったりします。

      英語サイトなども含めて調べたりteratailなどで質問したりするのも一つの解決法です。
      質問への返答や解決にはなっていなく恐縮ですが頑張ってみてください。

  18. 匿名 より:

    「5行目の「/n」という部分は」は「5行目の「\n」という部分は」の間違いかと思いました

  19. 匿名 より:

    ああ何を助けてほしいのかちゃんと書いていませんでした申し訳ありません.TeXで困っている訳ではなくつまりsettings.jsonが丸々TeXのためのものになっているので「“code-runner.executorMap”: { と書かれた場所を探してください。」で詰んでいるのです.初期の状態のvscodeのsettings.jsonには「“code-runner.executorMap”: { と書かれた場所」があったのでしょうか...あまり覚えていないのですが,もしそうであれば「初期の状態のvscodeのsettings.json」の中身がどこかに落ちていないでしょうか.

    またTeXの方の内容の下に続けてそれをそのまま置いて大丈夫なのでしょうか?

    すみません,これで解決しなければteratailに行きます.

    • dennou より:

      管理人です。
      なるほどそういう意味でしたか。失礼しました。

      参考までにわたしが使っているsettings.jsonの”code-runner.executorMap”部分の記述は以下のようなイメージとなります。
      code-runner部分のsettings.jsonイメージ

      一応こちらから上記settings.jsonをダウンロードできますので、参考になさってください。
      ※もちろん、必要部分以外は適宜お使いの環境の記述に置き換えてください。

      • 匿名 より:

        ありがとうございます大変助かりました!元あったTeXのためのものの真下にそれを置いておきました!無事コードも実行できました!(ただscanfを使うものがあったのでターミナル出力にはしました)

  20. 匿名 より:

    こんばんは.こちらの記事を参考に無事プログラミングが出来るようになりました,ありがとうございます!

    ところで作ったプログラムを一つのアプリ(ソフト?ツール?)のようにするにはどのようにすればいいのでしょうか?

    例えばx以下の素数を表示するプログラムなら,デスクトップにアイコンがあってそれをクリックすると数xを入力する窓があってそこにxを入力するとx以下の素数だけが表示される,といった具合です.毎回エディタを起動してファイルをわざわざ探したあとにあの黒いコード画面と汚い出力画面を見たくないのでこういうものを作れたらいいなと思いました.

    少し調べてみると「GUIプログラミング」あたりの単語が多分自分の求めているものなのかな?と思ったのですがどういう訳かC言語では到底無理,pythonでやれみたいな意見をよく見かけました.pythonは大学の講義で単位を取れる程度にはやりましたがあの空白の扱いを少し間違えただけでエラーが出る(空白なので間違いの箇所に気づきにくい)という仕様にだいぶストレスを感じたためできれば他の言語がいいです.

    Windows10 64bitを想定していますが,このようなものを作るのに必要な知識,及びそれがどこで得られるかを教えてくれたらとても嬉しいです.ある程度体系的な知識が必要であれば本を買うことも厭いません.

    • dennou より:

      管理人です。

      > ところで作ったプログラムを一つのアプリ(ソフト?ツール?)のようにするにはどのようにすればいいのでしょうか?

      この手の質問、一番難しい質問です。(笑)

      「黒いコード画面と汚い出力画面を見たくない」「Pythonはストレスを感じるので×」
      う~ん、これは大変です!

      実際には、VsCode上で実行しているC言語の実行ファイルも一つのアプリです。
      でも、匿名さんのイメージしているアプリはウインドウがあるものを指しているのですよね。

      《わたしだったら》でお話しますが、ブラウザ上で動くJavaScriptで作ると思います。
      ただしJavaScriptでプログラミングする場合、HTMLとCSSの知識も無いと厳しいです。
      ブラウザアプリであればWindowsやMacあるいはスマホなどのOSに関係なく動きます。
      JavaScriptなら開発環境もVsCodeとChromeで事足ります。

      ブラウザ上で動くアプリはちょっと、というのであればC#を使うと思います。ウインドウやボタンの配置がマウスでできるので。
      C#の場合は、MicrosortのVisual Studioという統合開発環境をインストールしてプログラミングします。

      > Windows10 64bitを想定していますが,このようなものを作るのに必要な知識,及びそれがどこで得られるかを教えてくれたらとても嬉しいです.

      どこで得られるか?ずばりインターネットです。
      無料でも沢山学習サイトがありますし、分からないところは検索できます。
      体系的にであれば、Udemyなどの動画学習サイトはかなり質も高くておすすめです。(有料ですが、よくセールをしているので2000円くらいでもちゃんとした講座を受けることができる)

      JavaScriptで作ったブラウザアプリのイメージです。参考になさってください。(サイト上で Ctrl + U キーでソースコードが見れます)

      素数を求めるサイト – https://torisky.com/apps/sosu/index.html

      何はともあれプログラミングには、お金をかけなくても時間は掛ける必要があるかと思います。

      • 匿名 より:

        とても親身な回答で感激しました。VSCode以外に何か入れたくもないし確かにOSに依存しないのは大きな魅力だなと思ったのでJavaScriptを勉強してみます!今は時間も結構あるので今のうちに完全に出来るようになっておきます、大変ありがとうございました!

        • dennou より:

          ぜひプログラミングを楽しんでください。

          • 匿名 より:

            お久しぶりです!あれからkindle unlimitedでjavascriptの本をいくつか眺めてみて,まだ本の内容全部はやっていないですがやりたいことは出来るようになってきたと感じています.

            ところで同じようにアプリ(ソフト?ツール?)を作るものとしてvisual studioというものを知り合いにおすすめされたのですが是非dennouさんの意見を聞いてみたいです!C含めいろいろな言語で出来る上にドラッグドロップで簡単に作れるとのことらしいのですが.

          • dennou より:

            こんんばんは、管理人です。
            「ドラッグ&ドロップで簡単に作れる」のはボタンやテキストボックス等のUI画面だけで処理内容はプログラミングが必要です。
            プログラミング言語はC#を使うことが最近は多いようです。
            ゲーム開発で有名なUnityもC#がメインの開発言語です。ちなみにUnityではコード作成部分にはVisual Studioを利用することになります。

            Visual Studioの開発イメージは以下の記事にあります。(ただし情報が古いです。Visual Studioは現在2019が主流です)

            第1回 最初のフォームアプリ – 電脳産物
            https://dianxnao.com/cs%e7%ac%ac1%e5%9b%9e%e6%9c%80%e5%88%9d%e3%81%ae%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%82%a2%e3%83%97%e3%83%aa/

  21. たなか より:

    こんばんは
    プログラミング初心者です。
    以下の文を入力したのですが正常に動いてくれません。
    どこが間違っているのでしょうか教えていただきたいです。
    /* 画面に何か表示するプログラム */
    #include
    int main(void)
    {
    printf(“C言語は習うより慣れろ\n”);
    return 0;
    }

    • たなか より:

      ¥となっておりますが画面上では\このようになっています

    • dennou より:

      おはようございます、たなかさん。管理人です。
      見直してもうまくいかない場合は、同記事のC言語プログラムを作ってみるの項にあるhello.cの内容をそのままコピー&貼り付けしてみて確認するといいかもしれません。

      初めのうちは自分で入力した間違いに自分で気づくことが一番の難関かもしれませんが、頑張ってみてください。

      補足として、うまくいかない場合のエラーメッセージなども一緒に記述しておくと質問の解決につながることが多いです。あとわたしもよくやりますが、Googleで、「エラーメッセージ文(スペース)C言語」などと検索するとすぐに原因が分かる場合も多いですよ。

  22. 匿名 より:

    ありがとうございます!visual studioの本も色々見てみます!

  23. ゆうま より:

    こんばんは。管理人さんが紹介してくださったやり方でこれまでVScodeでC言語を動かすことができていたのですが、今日VScodeを起動してC言語を動かそうとしたら以下↓のようなエラーが起きました。自分なりに調べてみて、”&&”を”;”に変えたら直るという記述を見てやってみたのですが、駄目でした。自分では解決が難しそうなので、もし何かご存じでしたら、助けていただきたいです。

    新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

    PS C:\Users\crescendo\Documents\C> cd “c:\Users\crescendo\Documents\C\STEINS;GATE\” && gcc -fexec-charset=CP932 test.c -o test
    && “c:\Users\crescendo\Documents\C\STEINS;GATE\”test
    発生場所 行:1 文字:50
    + cd “c:\Users\crescendo\Documents\C\STEINS;GATE\” && gcc -fexec-charse …
    + ~~
    トークン ‘&&’ は、このバージョンでは有効なステートメント区切りではありません。
    発生場所 行:1 文字:107
    + … ” && gcc -fexec-charset=CP932 test.c -o test
    && “c:\Use …
    + ~~
    トークン ‘&&’ は、このバージョンでは有効なステートメント区切りではありません。
    発生場所 行:1 文字:110
    + … test && “c:\Users\crescendo\Documents\C\STEINS;GATE\”
    test …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    式は、パイプラインの最初の要素としてのみ許可されます。
    発生場所 行:1 文字:155
    + … test && “c:\Users\crescendo\Documents\C\STEINS;GATE\”test
    + ~~~~~~~~~~~
    式またはステートメントのトークン ‘test’ を使用できません。
    + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordEx
    ception
    + FullyQualifiedErrorId : InvalidEndOfLine

  24. ゆうま より:

    お返事ありがとうございます。この記事を見て設定したのが二週間ほど前なので、各種設定は最新のはずです。説明不足ですみません。
    Code Runnerの設定も改めて見直してみましたが、特に問題はなさそうでした。
    その上で、”;”を”&&”の記述に戻した上再びやってみたのですが、やはり最初のコメントに貼ったようなエラーが出てできませんでした…

    • dennou より:

      こんばんは。

      settings.jsonの記述ですが、

      $fileNameWithoutExt

      の次にくる「&&」の前後に半角スペースが入っていますでしょうか?

  25. ゆうま より:

    確認してみましたが、半角スペース入ってました。

    • dennou より:

      そうですか。
      わたしも気になって最新のVsCode(2021.9.8時点)をインストールして確認してみましたが、ゆうまさんのエラーが確認できませんでした。
      その際、機能拡張は、

      • Japanese Language Pack for Visual Studio Code
      • C/C++
      • Code Runner

      のみの最低限でチェックしてみました。
      一度VsCodeを設定ファイルも含めて完全にアンインストールしてみるのも1つの解決策かもしれません。
      (最初からやり直すことになり大変だとは思いますが…)

      参考までにVsCodeの完全アンインストール方法の記事を投稿してみました。
      https://dianxnao.com/visual-studio-code%e3%82%92%e5%ae%8c%e5%85%a8%e3%81%ab%e3%82%a2%e3%83%b3%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8bwindows/

      • ゆうま より:

        すみません、解決しました!何故かはわかりませんが、システムに設定したMingwへのパスがなくなっていたので、改めてパスを設定して追加したら直りました。
        ご丁寧に対応いただき本当にありがとうございました。

        ただ、Cのコンパイルは無事できるようになったのですが、以下↓のように、
        「新しいクロスプラットフォームの PowerShell をお試しください」というメッセージが毎回出るのと、ディレクトリ?の表示メッセージに「if ($?)」とよくわからないものがあり、管理人さんが貼られているCの実行結果メッセージとは結構違うものになります。これは大丈夫なのでしょうか?
        重ね重ね申し訳ないですが、なにか改善点などがあれば教えていただきたいです。

        新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6
        PS C:\Users\crescendo\Documents\C> cd “c:\Users\crescendo\Documents\C\Traning\” ; if ($?) { gcc -fexec-charset=CP932 test.c -o test } ; if ($?) { .\test }
        C言語は習うより慣れよ

        • dennou より:

          解決して良かったです。
          ご指摘の件ですが、わたしもVsCodeを最新にして実行したらゆうまさんと同じ実行結果となりました。
          実行には影響なく大丈夫です。VsCodeのバージョンアップによるものと思われます。

          またVsCodeのバージョンアップに伴い、Code Runner設定の

          "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",

          の部分の記述が必要ないことが分かりました。
          上記は記述しても記述しなくても動作は変わりませんでした。わたしは削除しました。

          今回、記事の上記該当部分や実行結果の画像も修正しておきました。
          色々とご報告ありがとうございます。

          • ゆうま より:

            こちらこそありがとうございました!
            また何かありましたらよろしくお願いしますm(_ _)m

  26. 匿名 より:

    ド初心者ですが、こちらの記事のおかげで実行環境が構築できました。
    大変感謝いたします。

  27. DAIKI より:

    settings.jsonに
    “code-runner.executorMap”: {
    という行がないのですが
    -fexec-charset=CP932はどこに追加すればよろしいのでしょうか?

    • dennou より:

      DAIKIさん こんばんは。管理人です。
      どうやらVsCodeのバージョン1.61.2では、以前のsettings.json項目がすっかり無くなってしまい記事とは違っていたようです。

      記事自体を修正しました。
      わたしも最新のVsCodeをインストールして確認してみました。
      Code Runnerのターミナル設定を変更する の項目から設定をし直してみてください。

      DAIKIさんの環境で見えなかったテキスト部分をサイトからコピー出来る様に記事を修正してあります。

  28. ぶるねい より:

    管理人様

    Mingw-w64を導入して,C言語の環境を構築してからはCtrl+F5でデバックしようとすると,
    “launch:program does not exist”とメッセージが現れ,実行のタグにある「デバック」や「デバックなしで実行」ができなくなりました.
    このサイトに記載されている通りに▷ボタン(RunCodeボタン)を押すと問題なく実行できるのですが,,,
    どうしてこうなってしまったのか原因が知りたいです.
    何卒よろしくお願いします.

  29. メイ より:

    無事設定できました。
    ありがとうございました。

  30. issy より:

    失礼します.VisualStudio Codeのヴァージョン1.66.2にて本サイトを実施させていただいたのですが,実行しようとすると
    以下のような警告が発生します.

    g++ : 用語 ‘g++’ は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されて
    いることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
    発生場所 行:1 文字:70
    + … s\student\Documents\assignment\assignment_1\” ; if ($?) { g++ Untitle …
    + ~~~
    + CategoryInfo : ObjectNotFound: (g++:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    settings.jsonの書き込みが悪いのだとは思うのですが,アドバイスいただければ幸いです.よろしくお願いします.

    • dennou より:

      こんばんはissyさん。管理人です。
      わたしも同じVsCodeのバージョン1.66.2で試しましたが問題なくコンパイル&実行できました。

      一応確認ですが、コンパイルしようとしているファイルはファイル名の拡張子が「~.c」で終わっていますでしょうか?
      例) hello.c
      エラーメッセージに「g++」の部分がありますが、拡張子が「~.cpp」の際に実行されるようでしたので。

      もしうまくいかないようであれば、以下にわたしの利用しているsettings.jsonファイル内容へのリンクを貼っておくので置き換えてみてください。

      settings.jsonサンプル
      https://dianxnao.com/vscode/settings.json

  31. 匿名 より:

    コンパイルを実行しようとすると「アクセスが拒否されました」と出ます。なぜなのでしょうか?

    • dennou より:

      こんばんは、管理人です。コンパイルはプログラムファイル(~.cのファイル)から実行形式ファイル(~.exe)を作成します。
      もしコンパイルを実行したフォルダがWindowsの特殊フォルダ(例:C:\Program Files\やc:\Windows\などのフォルダ)だとコンパイルによる実行ファイルは生成されず「アクセスが拒否されました」と表示されます。

      ドキュメントフォルダなどでは、基本的にコンパイル可能です。
      ちなみに、わたしは授業で学生にドキュメントフォルダに「gcc」という名称でフォルダを作成させ、そこにプログラムを保存してコンパイルしてもらっています。
      コンパイルを実行したフォルダを確認してみてはどうでしょうか?

  32. こちゃそ より:

    転職に伴い自分で勉強するようになりました。
    会社でも研修以降プログラミングに触れる機会が無くなってしまったためかなり苦労しましたが、環境構築も無事できました!ありがとうございます。

  33. にゃあ より:

    /*
    初めまして。
    質問失礼します。

    今回初めてC言語に挑戦すべく、環境構築を行っているのですが、さっそくうまくいかず出鼻をくじかれています。
    「Visual Studio CodeでC言語プログラミングを始める(Windows編)」
    のサイトにあるように、順番にインストールなども行い、
    「WindowsにC言語開発環境 Mingw-w64(gccコンパイラ)を導入する」
    のサイトで最後に
      gcc -v
    と入力した際は特に問題は生じませんでした。
    しかし、その後hello.cを作成し、実行しようとしてみたところ、

    ‘gcc’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。

    とのエラーコードが出現しました。
    この場合、どのように対処するべきなのでしょうか、教えていただきたいです。

    • dennou より:

      にゃあさん、こんばんは。管理人です。
      試しにパソコンを再起動してから、もう一度hello.cをVsCodeからコンパイル実行をしてみてください。

      以前全く同じ症状の方がコメントされていました。
      gccコンパイラ導入後にgcc -vでgccコンパイラのバージョンが表示されたが、hello.cをコンパイル実行しようとすると

      ‘gcc’ は、内部コマンドまたは外部コマンド、
      操作可能なプログラムまたはバッチ ファイルとして認識されていません。

      となってコンパイルが出来なかったがパソコンを再起動したらできるようになった、というものです。
      ご参考までに。

      • にゃあ より:

        管理人様
        早速の返信ありがとうございます。
        また、過去に当該事象があったこと、見落としておりました。
        私のほうも、PCの再起動をしたところ特に問題なく実行することができるようになりました。
        ありがとございます!

タイトルとURLをコピーしました