ページ 11

単体で実行可能な実行ファイルにする方法

Posted: 2009年11月15日(日) 08:40
by kerotan0820
たびたび質問をして申し訳ありません


VC++で作成したプログラムを


Ctrl+F7 でコンパイルし、作成した実行ファイルがデバッグフォルダ内にあるのですが、それを実行し、数値などを入力して実行をしようとするとウィンドウが閉じます


どうすればウィンドウの表示を維持できるのですか?


あと、ウィンドウをコマンドプロントでなくWindowsの普通のウィンドウで立ち上げることは可能なのでしょうか

Re:単体で実行可能な実行ファイルにする方法

Posted: 2009年11月15日(日) 09:20
by Mist
> どうすればウィンドウの表示を維持できるのですか?

方法1:メニューから「デバッグ」→「デバッグなしで開始」を選択する。
方法2:プログラムの最後にgetcharを入れてキー入力されないと終わらないようにする

> あと、ウィンドウをコマンドプロントでなくWindowsの普通のウィンドウで立ち上げることは可能なのでしょうか

コンソールプログラムというのはコマンドプロンプトで動くプログラムなので無理です。

Re:単体で実行可能な実行ファイルにする方法

Posted: 2009年11月15日(日) 09:26
by kerotan0820
■Mist様
説明不足で申し訳ありません
自分で見ることは出来るのですが、この作成したファイルをブログにて配布したいのですが、exeファイルを実行しても実行後閉じてしまいます
このプログラムは入力したテストの合計点、平均などを求めるプログラムなのですが、入力を求めるところまでは可能なのですが、入力後Enterを押すとウィンドウが閉じてしまいます;

Re:単体で実行可能な実行ファイルにする方法

Posted: 2009年11月15日(日) 09:51
by Mist
だから、コンソールプログラムをexeから直接実行した場合、終了と同時にコマンドプロンプトが閉じられるのでそうなるものなのです。
方法2ように、結果を見終わるまでプログラムが終わらないようにするしかありません。

Re:単体で実行可能な実行ファイルにする方法

Posted: 2009年11月15日(日) 10:23
by kerotan0820
■Mist様
getcharの使い方を調べてみたのですが、いまいちわかりません;
以下のプログラムに組み込みたいのですがその場合どうすればよいのでしょうか
#include <stdio.h>
int main(void){
	int kokugo,sugaku,rika,shakai,eigo,gijutsu,kateika,bijutsu,ongaku,gikagoukei,kyouka5,kyouka9,kyouka3;
    double a,b;
	printf("各教科の点数を入力してください♪)\n");
	printf("国語:");   scanf("%d" ,&kokugo);
	printf("数学:");   scanf("%d" ,&sugaku);
	printf("理科:");   scanf("%d" ,&rika);
	printf("社会:");   scanf("%d" ,&shakai);
	printf("英語:");   scanf("%d" ,&eigo);
	printf("技術:");   scanf("%d" ,&gijutsu);
	printf("家庭科:"); scanf("%d" ,&kateika);
	printf("美術:");   scanf("%d" ,&bijutsu);
	printf("音楽:");   scanf("%d" ,&ongaku);
    printf("__________________\n");	
	gikagoukei=gijutsu+kateika;
	kyouka9=kokugo+sugaku+rika+shakai+eigo+gikagoukei+bijutsu+ongaku;
	kyouka5=kokugo+sugaku+rika+shakai+eigo;
	kyouka3=kokugo+sugaku+eigo;
	a=(double)kyouka9/9;
	b=(double)kyouka5/5;
    printf("                       ≪結果≫\n");
    printf("■技家合計■\n");
	printf("技家合計:%d\n\n" ,gikagoukei);
	printf("■3,5,9教科合計■\n");
    printf("3教科合計:%d\n" ,kyouka3);
	printf("5教科合計:%d\n" ,kyouka5);
	printf("9教科合計:%d\n\n" ,kyouka9);
	printf("■5,9教科平均■\n");
	printf("5教科平均:%f\n" ,b);
	printf("9教科平均:%f\n" ,a);
	return 0;
	int getchar(void);
}

Re:単体で実行可能な実行ファイルにする方法

Posted: 2009年11月15日(日) 10:29
by non
ただ単に
getchar();
とだけ、書いてみて。

Re:単体で実行可能な実行ファイルにする方法

Posted: 2009年11月15日(日) 10:29
by non
return()の前に。

Re:単体で実行可能な実行ファイルにする方法

Posted: 2009年11月15日(日) 10:32
by kerotan0820
■non様
追加してコンパイルし、Debugフォルダ内の実行ファイルで試しましたが閉じてしまいます;

ちなみに追加したのはこんな感じです(下のほうだけ)
printf("■5,9教科平均■\n");
	printf("5教科平均:%f\n" ,b);
	printf("9教科平均:%f\n" ,a);
	getchar(); 
	return 0;
}

Re:単体で実行可能な実行ファイルにする方法

Posted: 2009年11月15日(日) 10:41
by バグ
多分、scanf関数を使用した際に入力された改行コードがバッファに残っていて、getchar関数がそれを取得してしまっているのではないでしょうか?
とりあえず、getcharではなく、scanfで空読みさせればいいのでは?

Re:単体で実行可能な実行ファイルにする方法

Posted: 2009年11月15日(日) 10:51
by kerotan0820
■バグ様
なるほど!そのような手もありましたね^^
無事成功しました♪
本当にたすかりました。ありがとうございました