マイクロソフト社のVC++を使用していますが、
Win32 Console Applicationで作成したプログラムを
C++の画面上の実行ボタン(!びっくりマークのやつ)
を押して実行するとうまくいきますが、
その実行プログラムがDebug(綴り合ってるかな?デバッグ)のフォルダ
に出てきていて、
そのアイコンをクリックして起動させると(MSdos)、
数値入力は何事もなく行えるのですが、
そのあと結果を表示したかと思うと
直ちにそのプログラムが画面から姿を消してしまいます。
というか、勝手に終了してしまいます。
結果はおそらく出ていると思うのですが
それを見るまもなく消えてしまいます。
やはり、C++のアプリケーションから実行しないと結果は
見ることは出来ないのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

奇しくもNo.1の方の1の方法をNo.3の方が、2の方法を私がそれぞれ提案していますね~。

(^_^)
補足に従って2の方法を説明します。
結果表示の部分ですが、C++だとcoutでしょうか、それともprintfをご使用でしょうか?
とにかくそれらの文による結果表示の次の行に

getchar();

を入れるだけです。
リンクエラーが出る様でしたらヘルプでgetcharを引いて必要なヘッダファイルをインクルードして下さい。
    • good
    • 0

「Console Application」というのは、基本的にコマンドライン上で実行するためのものです。


MS-DOSコマンドプロンプトをスタートメニューから起動し、当該ディレクトリに cd コマンド等で移動してから実行してください。
    • good
    • 0

結果表示部分の後にgetchar()を置いてみてください。


Enterを押すまで表示が消えずに残ると思うのですが・・・。

この回答への補足

それを書く場所は
C++内のソースファイルのある部分ですか?

補足日時:2001/08/21 15:11
    • good
    • 0

こんにちは、honiyonです。



 C++のアプリケーションから~というのは良く分かりませんが...(^^;

 それはWindowsの仕様です。
 MS-DOSアプリケーションは、実行が終了すると即Windowが閉じられます。
 そのため、最後に結果を出力して終了していると、結果を確認する間もなくWindowが閉じられてしまう事になります。

 これを避ける方法は2つあります。

 1.MS-DOSを起動し、そこからアプリケーションを実行する。
 2.結果表示後、何かキーを入力してもらうまでアプリケーションを終了しない
  ようにする。
  

 1は、MS-DOSというアプリケーション(として扱われます)から実行しているため、プログラムの実行が終了してもMS-DOSは終了しないのでWindowは閉じられません。(言っている意味分かりますでしょう^^;)
 2は結果表示後、すぐに終了しないようにする事で対処します。 具体的には getchar関数でも書いておけば、enterが押されるまで終了しなくなります。(この関数の詳細はヘルプで調べて下さい)

 参考になれば幸いです(..
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QVisual C++からpingを実行してその結果を得る方法

Visual C++からpingを実行してその結果を得る方法を教えてください。
ICMPのパケットを送出するプログラムが書ければいいのですが、
MFCを使うとTCP, UDPを使うことになるので、この方法は取れないように
思われます。あとは、ping.exeをShellExecute()で実行することも
考えられますが、pingの実行結果(コンソールに出力された文字列)の
取得方法が分かりません。よろしくお願いします。

Aベストアンサー

WinSockでpingっていうと…
「WinSock2.0プログラミング―Window Socket APIによるネットワークプログラミングのすべて」(江村 豊 監修 ソフトバンク ISBN4-7973-0688-2 )
サンプルプログラムがそのままです。

QC言語でpingを実行してその結果をもらうプログラム

丸投げのようで大変恐縮なのですが、タイトルの通り
のことをC言語プログラムで組みたいのですが、
どこかに(ネット上)サンプルプログラム等
はありませんでしょうか?
いきなりのC言語開発案件で四苦八苦しております。

Aベストアンサー

http://www003.upp.so-net.ne.jp/geek/programming/iphlpapi/index.html

が参考になると思います。

QVisual C++でdebugとreleaseで計算結果が異なる

Visual C++ 2005 Express Edition でdebugとreleaseで計算結果が変わってしまいます.
OSはwindows 2000 を使用しています.
桁数が12桁ほどの計算です.
どのような原因が考えられるでしょう?

Aベストアンサー

1.メモリーの初期値が0ではないのに0だと思っている。
2.確保したつもりのメモリーよりもよけいに書き込んでいる。
3.デバッグのときは勝手に0にしてくれたり、メモリーとメモリーの間に
隙間を作ってくれたりしているようです。
リリースモードではメモリーとメモリーのあいだに隙間は無いようです。

Qこのプログラムを実行すると座標列になるのですが、どうして実行結果のよう

このプログラムを実行すると座標列になるのですが、どうして実行結果のような座標列になるのかがよくわかりません。
僕はdraw_polygon()中のif(r>xxx)の部分に何かあるような気がします。単なる推測ですが・・・。
理由を教えていただけませんか?

#define _CRT_SECURE_NO_DEPRECATE 1
#include <stdio.h>
#include <math.h>
#defi ne PI 3.14159265358979323846

FILE *fp;//グローバル変数.あまり使うな!

double get_x(double r, double angle);
double get_y(double r, double angle);
void draw_polygon(int n, double r, double cx, double cy);

void main(void)
{

fp=fopen("polygon.csv","w");//チェック省略
draw_polygon(4,1,0,0);
fclose(fp);
}

double get_x(double r, double angle)
{
return(r*cos(angle));
}

double get_y(double r, double angle)
{
return(r*sin(angle));
}

void draw_polygon(int n, double r, double cx, double cy)
{
int i;
double delta,angle,x,y;

delta=2.0*PI/n;
for(i=0; i<=n; i++)//i<=n
{
angle=delta*i;
x=get_x(r,angle)+cx;
y=get_y(r,angle)+cy;
fprintf(fp,"%8.3f,%8.3f\n",x,y);
}
fprintf(fp,"\n");
if(r>0.05)
{
for(i=0; i<=n; i++)//i<=n
{
angle=delta*i;
x=get_x(r,angle)+cx;
y=get_y(r,angle)+cy;
draw_polygon(n,r*0.5,x,y);
}
}
}

プログラムを見やすく作ったのですが、この質問を掲示した途端に上下そろってしまいました(汗)
見にくくなってしまいすみません。

このプログラムを実行すると座標列になるのですが、どうして実行結果のような座標列になるのかがよくわかりません。
僕はdraw_polygon()中のif(r>xxx)の部分に何かあるような気がします。単なる推測ですが・・・。
理由を教えていただけませんか?

#define _CRT_SECURE_NO_DEPRECATE 1
#include <stdio.h>
#include <math.h>
#defi ne PI 3.14159265358979323846

FILE *fp;//グローバル変数.あまり使うな!

double get_x(double r, double angle);
double get_y(double r, double angle);
void draw_polygon(...続きを読む

Aベストアンサー

関数の再帰呼び出しって知っていますか?
draw_polygon()の中でdraw_polygon()を呼んでいますよね。これが再帰呼び出しです。
半径と中心座標を変えながらdraw_polygon()を実行していきます。半径が0.05以下になったらそれ以上再帰呼び出しをしません。

Qc言語のプログラムでこの実行結果を出したいのですがどうプログラムすればできますか? 続きの画像は補

c言語のプログラムでこの実行結果を出したいのですがどうプログラムすればできますか?

続きの画像は補足でだします

Aベストアンサー

#include <stdio.h>
#include <stddef.h>

void calc_average(int class[][2], size_t n);

int main(void) {
 int class[4][2] = {{0, 0}};
 calc_average(class, sizeof(class)/sizeof(class[0]));
 return 0;
}

void calc_average(int class[][2], size_t n) {
 int i, j, k;
 printf("クラス(1〜3) --> ");
 scanf("%d", &i);
 if (i <= 0) {
  for (j = 1; j < n; j++)
   printf("クラス %d の平均点 : %f\n", j, ((double)class[j][1])/class[j][0]);
 } else if (i > 0 && i < 4) {
  printf("点数 --> ");
  scanf("%d", &k);
  class[i][0] += 1;
  class[i][1] += k;
  return calc_average(class, n);
 } else
  return calc_average(class, n);
}

#include <stdio.h>
#include <stddef.h>

void calc_average(int class[][2], size_t n);

int main(void) {
 int class[4][2] = {{0, 0}};
 calc_average(class, sizeof(class)/sizeof(class[0]));
 return 0;
}

void calc_average(int class[][2], size_t n) {
 int i, j, k;
 printf("クラス(1〜3) --> ");
 scanf("%d", &i);
 if (i <= 0) {
  for (j = 1; j < n; j++)
   printf("クラス %d の平均点 : %f\n", j, ((double)class[j][1])/class[j][0]);
 } else if (i > 0 && i < 4) {
  pri...続きを読む


人気Q&Aランキング

おすすめ情報