- Home
- C, C#, Visual Studio
- [C][C#][VS]コンソールアプリケーションでコマンドプロンプトがすぐ消えないための対策まとめ
[C][C#][VS]コンソールアプリケーションでコマンドプロンプトがすぐ消えないための対策まとめ
Visual StudioでCやC#でコンソールアプリケーション(コマンドプロンプトで動くもの)のデバッグ実行がすぐに消える対策。
デバッグ実行でコマンドプロンプトがすぐに消える
コンソールアプリケーションのデバッグ実行時に一瞬でコマンドプロンプトが閉じる問題で・・・。
問題といっても、処理が早く終わってプログラム終了してるだけだから、問題とは言えないけど。
古いVisual Studioなら「続行するなら何かキーを押してください...」というメッセージで処理が止まり、処理の内容を確認することができたのだが。
調べてみると、Visual Studio2010からその機能はなくなったらしい。
そこで、当ブログではC言語とC#言語でその対策を行いたい。
C言語のコンソールアプリケーションの対策
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include<stdio.h> #include <stdlib.h> // system("pause")を使用するために必要 int main(void) { int a = 1000; a += 1; printf("%d\n\n", a); a -= 10; printf("%d\n\n", a); a *= 2; printf("%d\n\n", a); a /= 10; printf("%d\n\n", a); a %= 5; printf("%d\n\n", a); system("pause"); // これが一時停止の命令 return 0; } |
23行目のsystem関数を使用して、「system(“pause”);」と記述すると、その部分で処理が止まり何かキーを押さないとプログラムが進まなくなる。
このsystem関数を使うために2行目で「stdlib.h」を読み込んでいる。
実行結果
このように、下にメッセージが自動で表示される。
C#言語のコンソールアプリケーションの対策
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CS_Console01 { class Program { static void Main(string[] args) { Console.WriteLine("test"); Console.ReadLine(); } } } |
C#プログラムでは、これといったポーズ命令はないらしいので、ほとんどの方が
「Console.ReadLine();」
を使用している。
このメソッドは、何かキーを押すと次の処理へ進むのではなく。
1行分のテキストを入力するもので、何も入力せずにEnterキーを押すことにより、やりたいことを実現している。
何か文字を入力しても、戻り値を受け取る変数を指定していないので、プログラムの動作には影響はない。
実行結果
「Console.ReadLine();」はあくまで文字入力のためのメソッドなので、キーを押せとかのメッセージは表示しない。
直前に「Console.WriteLine(“Enterキーを押してください”);」という風に書いてもいいが、動作(表示結果)を見たいだけなのに、そんな面倒くさいことはしない。
ブレークポイントを貼るやり方
実は、コードを書かなくても、ブレークポイントを貼ればいいというだけ。
これが一番、労力が少ない。
任意の行を選択して、「F9」を押せば、行番号の左に赤丸が表示されブレークポイントが貼られる。
こ
ブレークポイントで、実行がポーズされると、コマンドプロンプトがVisual Studioの裏に隠れるので注意すること。
ブレークポイント貼らない方が、コマンドプロンプトが前面に出てくるので、そこは好き好きでやればいいとおも
CとC#でブレークポイントが張れる場所が異なる
C#は空行にはブレークポイントは貼れない。
Cは空行でもブレークポイントは設定できる(ただし、実際に止まるのは次の命令文)。
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。