コンソールアプリケーションが直ぐに終了してしまう。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
プータカ

コンソールアプリケーションが直ぐに終了してしまう。

#1

投稿記事 by プータカ » 13年前

プログラムの練習にMicrosoft Visual C++ 2010 Expressで以下のようにソースコードを書いてみました。
//nyujoryo.cpp
#include<iostream>
using namespace std;

int main()
{
int satou;

cout<<"このたびABCランドに"<<endl;
cout<<"お越しいただきありがとうございます。"<<endl;

cout<<"-------------------------------------------------------------------------------"<<endl;
cout<<"年齢を入力してください---";
cin>>satou;

if(satou>=13){
cout<<"1000円です"<<endl;
}
if(satou<=12){
cout<<"500円です"<<endl;

}
cout<<"--------------------------------------------------------------------------------"<<endl;
cout<<"では、ごゆっくりお楽しみください"<<endl;

return 0;
}

これをデバックからデバックなしで実行エラーを吐かずに無事起動できました。

数字を14と入力したところ

1000円ですと 表示されたのまではよかったのですが

これをプロジェクトフォルダーのexeファイルを実行してみたところ、正常に起動したと思ったのですが
数字を入力した瞬間

1000ですと 一瞬は表示されるのですがすぐにアプリが落ちてしまいます。
ソースコードに問題があるのでしょうか?

赤鬼

Re: コンソールアプリケーションが直ぐに終了してしまう。

#2

投稿記事 by 赤鬼 » 13年前

プータカ さんが書きました:

コード:

//nyujoryo.cpp
#include<iostream>
using namespace std;

int main()
{
	int satou;

	cout<<"このたびABCランドに"<<endl;
	cout<<"お越しいただきありがとうございます。"<<endl;

	cout<<"-------------------------------------------------------------------------------"<<endl;
	cout<<"年齢を入力してください---";
	cin>>satou;

	if(satou>=13){
		cout<<"1000円です"<<endl;
	}
	if(satou<=12){
		cout<<"500円です"<<endl;

	}
	cout<<"--------------------------------------------------------------------------------"<<endl;
	cout<<"では、ごゆっくりお楽しみください"<<endl;

	getchar();				//これを追加して入力待ち状態にする。

	return 0;
}
最後の表示が終われば関数が抜けてしまうので、getcharなどでで入力待ち状態にしなくてはなりません

プータカ

Re: コンソールアプリケーションが直ぐに終了してしまう。

#3

投稿記事 by プータカ » 13年前

赤鬼 さんが書きました:
プータカ さんが書きました:

コード:

//nyujoryo.cpp
#include<iostream>
using namespace std;

int main()
{
	int satou;

	cout<<"このたびABCランドに"<<endl;
	cout<<"お越しいただきありがとうございます。"<<endl;

	cout<<"-------------------------------------------------------------------------------"<<endl;
	cout<<"年齢を入力してください---";
	cin>>satou;

	if(satou>=13){
		cout<<"1000円です"<<endl;
	}
	if(satou<=12){
		cout<<"500円です"<<endl;

	}
	cout<<"--------------------------------------------------------------------------------"<<endl;
	cout<<"では、ごゆっくりお楽しみください"<<endl;

	getchar();				//これを追加して入力待ち状態にする。

	return 0;
}
最後の表示が終われば関数が抜けてしまうので、getcharなどでで入力待ち状態にしなくてはなりません
getcharととりあえずぐぐってみたのですが、全くの初心者の為この場合どこに入れればいいのかわかりません。
そこまで教えていただけると嬉しいです。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#4

投稿記事 by Dixq (管理人) » 13年前

Visual Studioであれば、添付ファイルの左の黄色矢印が付いている部分をクリックして処理を止めることが出来ます。
クリックすると赤●が表示されますので、その状態でF5キーを押してください。
そうすればreturnする前に処理が止まります。
その時の変数の中身もみれるので便利ですよ。
添付ファイル
無題.png
無題.png (42.71 KiB) 閲覧数: 25679 回

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#5

投稿記事 by Dixq (管理人) » 13年前

> getcharととりあえずぐぐってみたのですが、全くの初心者の為この場合どこに入れればいいのかわかりません。

ソースコードの最後に書かれていますよ。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#6

投稿記事 by softya(ソフト屋) » 13年前

とりあえず、C++で勉強されているんでしょうか? 
C言語だと書き方が違いますが、前までのトピックの流れだとC言語だと思ってました。
参考にしているサイトを教えて下さいね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

プータカ

Re: コンソールアプリケーションが直ぐに終了してしまう。

#7

投稿記事 by プータカ » 13年前

softya(ソフト屋) さんが書きました:とりあえず、C++で勉強されているんでしょうか? 
C言語だと書き方が違いますが、前までのトピックの流れだとC言語だと思ってました。
参考にしているサイトを教えて下さいね。
サイトはこのサイトと本です。

猫でとわかるC++という本です。

プータカ

Re: コンソールアプリケーションが直ぐに終了してしまう。

#8

投稿記事 by プータカ » 13年前

Dixq (管理人) さんが書きました:Visual Studioであれば、添付ファイルの左の黄色矢印が付いている部分をクリックして処理を止めることが出来ます。
クリックすると赤●が表示されますので、その状態でF5キーを押してください。
そうすればreturnする前に処理が止まります。
その時の変数の中身もみれるので便利ですよ。
Visual Studioで実行する場合はそのまま終了したいのですが、プロジェクトとフォルダーの
中身にあるexeファイルから実行する場合は入力した瞬間終了してしまうのですよ…

赤鬼

Re: コンソールアプリケーションが直ぐに終了してしまう。

#9

投稿記事 by 赤鬼 » 13年前

プータカ さんが書きました: getcharととりあえずぐぐってみたのですが、全くの初心者の為この場合どこに入れればいいのかわかりません。
そこまで教えていただけると嬉しいです。
あー、ちょっと投げやりでしたね。
まず、exeファイルを直接開くと関数の終了と共にコンソールウィンドウが破棄されます。
getchar()というのはキーボードからの入力を待つ関数で戻り値が整数で帰ってきます。
また、入力を待つ間、ずっと待機してくれているので、関数を抜けず、コンソールウィンドウが破棄されません。
プータカさんはexeファイルを直接開いたら、結果が表示無かったことを質問されていたので、結果を表示した後に追加するべきでは無いのでしょうか?

プータカ

Re: コンソールアプリケーションが直ぐに終了してしまう。

#10

投稿記事 by プータカ » 13年前

よくよく見てみたら、コードを囲むのを忘れていました。
申し訳ないです。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#11

投稿記事 by みけCAT » 13年前

一度コマンドプロンプトを開き、そこから実行してみてください。
もしくは(任意の名前).batというファイルを

コード:

@(実行するexeファイルの名前)
@pause
という内容で保存し、それをクリックまたはダブルクリックで開いてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#12

投稿記事 by softya(ソフト屋) » 13年前

猫でもわかるC++ですね。
止める方法はいくつかあって赤鬼さんのはC言語の標準関数ライブラリを使う方法です。
Dixqさんのは、デバッガの機能を使う方法ですね。

結果をそのまま残したくてコンソールアプリの場合は、コマンドプロンプト画面からコンソールアプリを起動してください。
コマンドプロンプト画面の起動方法は分かりますか?
Visual Studio 2010 コマンドプロンプトを使えば、そのままコンパイルから実行まで可能です。

【参考】
「コマンドプロンプトからコンパイル」
http://www.ced.is.utsunomiya-u.ac.jp/le ... prompt.php
ただし、c++なので拡張子はcではなくcppです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

プータカ

Re: コンソールアプリケーションが直ぐに終了してしまう。

#13

投稿記事 by プータカ » 13年前

softya(ソフト屋) さんが書きました:猫でもわかるC++ですね。
止める方法はいくつかあって赤鬼さんのはC言語の標準関数ライブラリを使う方法です。
Dixqさんのは、デバッガの機能を使う方法ですね。

結果をそのまま残したくてコンソールアプリの場合は、コマンドプロンプト画面からコンソールアプリを起動してください。
コマンドプロンプト画面の起動方法は分かりますか?
Visual Studio 2010 コマンドプロンプトを使えば、そのままコンパイルから実行まで可能です。

【参考】
「コマンドプロンプトからコンパイル」
http://www.ced.is.utsunomiya-u.ac.jp/le ... prompt.php
ただし、c++なので拡張子はcではなくcppです。
誤字申し訳ありません。
デバッカ機能で可能またコンソールプロント画面でも可能でしたが、batファイルを用いてやる方法でやてみたところ、

"ファイル名"は内部コマンドもしくは外部コマンド操作可能なプログラムとして認識できませんとでました

とでて実行できませんでした。

また、猫でもわかるC++を買った理由は、書店でざっとみいちばんわかりやすそうだったので買ってみたのですがもし他にC++関連書籍でおすすめの本などありましたら教えて下さい。
また私は、プログラム超初心者でC++がはじめてのプログラミングとなります。

詳しく、説明していただ、赤鬼さん、 Dixqさん、 softya、みけCAT 本当にありがとうございます。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#14

投稿記事 by みけCAT » 13年前

プータカ さんが書きました:デバッカ機能で可能またコンソールプロント画面でも可能でしたが、batファイルを用いてやる方法でやてみたところ、

"ファイル名"は内部コマンドもしくは外部コマンド操作可能なプログラムとして認識できませんとでました

とでて実行できませんでした。
batファイルをexeファイルと同じディレクトリに置いてみてください。
例えば、test.exeを実行するなら、test.exeと同じディレクトリに

コード:

@test.exe
@pause
という内容の(例えば)test.batというファイルを作成し、実行します。
それでもだめなら、先頭の@を取って試してみてください。
オフトピック
呼び捨てにしないでくれるとありがたいな・・・。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

プータカ

Re: コンソールアプリケーションが直ぐに終了してしまう。

#15

投稿記事 by プータカ » 13年前

みけCAT さんが書きました:
プータカ さんが書きました:デバッカ機能で可能またコンソールプロント画面でも可能でしたが、batファイルを用いてやる方法でやてみたところ、

"ファイル名"は内部コマンドもしくは外部コマンド操作可能なプログラムとして認識できませんとでました

とでて実行できませんでした。
batファイルをexeファイルと同じディレクトリに置いてみてください。
例えば、test.exeを実行するなら、test.exeと同じディレクトリに

コード:

@test.exe
@pause
という内容の(例えば)test.batというファイルを作成し、実行します。
それでもだめなら、先頭の@を取って試してみてください。
オフトピック
呼び捨てにしないでくれるとありがたいな・・・。
本当に申し訳ありません。
途中でさんつけると忘れていました。
呼び捨てにしたつもりはまったくないので
お気を悪くさせてしまいすみません。
これは投稿後の編集はできないのでしょうか?
申し訳ないです

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#16

投稿記事 by みけCAT » 13年前

プータカ さんが書きました:これは投稿後の編集はできないのでしょうか?
おそらく登録ユーザーでないとできません。

それより、batファイルを使用した方法の再実験はうまくいきましたか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

プータカ

Re: コンソールアプリケーションが直ぐに終了してしまう。

#17

投稿記事 by プータカ » 13年前

みけCAT さんが書きました:
プータカ さんが書きました:デバッカ機能で可能またコンソールプロント画面でも可能でしたが、batファイルを用いてやる方法でやてみたところ、

"ファイル名"は内部コマンドもしくは外部コマンド操作可能なプログラムとして認識できませんとでました

とでて実行できませんでした。
batファイルをexeファイルと同じディレクトリに置いてみてください。
例えば、test.exeを実行するなら、test.exeと同じディレクトリに

コード:

@test.exe
@pause
という内容の(例えば)test.batというファイルを作成し、実行します。
それでもだめなら、先頭の@を取って試してみてください。
オフトピック
呼び捨てにしないでくれるとありがたいな・・・。
同じディレクトリにいれたところできました!
みけCATさん丁寧かつ親切に教えていただきありがとうございます!
オフトピック
呼び捨ての件本当に申し訳ありません。
[/quote]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#18

投稿記事 by softya(ソフト屋) » 13年前

ちなみにC++は真っ当にやると難易度はかなり高くなると思います。
かるくC言語の拡張程度の意識だったら、さほどでは無いですが。

ところで猫C++って目次を見たところ文字列、ポインタ、構造体に解説に多めのページが取られていない様です。
特に構造体を抜いてクラスの説明になってしまっているのでここら辺の弱さはC言語主体である「ゲームプログラミングの館」や「龍神録」はわからない所が多く辛いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

プータカ

Re: コンソールアプリケーションが直ぐに終了してしまう。

#19

投稿記事 by プータカ » 13年前

softya(ソフト屋) さんが書きました:ちなみにC++は真っ当にやると難易度はかなり高くなると思います。
かるくC言語の拡張程度の意識だったら、さほどでは無いですが。

ところで猫C++って目次を見たところ文字列、ポインタ、構造体に解説に多めのページが取られていない様です。
特に構造体を抜いてクラスの説明になってしまっているのでここら辺の弱さはC言語主体である「ゲームプログラミングの館」や「龍神録」はわからない所が多く辛いと思います。
そうなんですかー

どこか、オススメのサイトなり書籍なのありましたら押していただけると嬉しいです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#20

投稿記事 by softya(ソフト屋) » 13年前

猫でもわかるのサイトではどうでしょう?

「猫でもわかるプログラミング」 C言語編なら構造体も詳しく書いてあると思います。
http://www.kumei.ne.jp/c_lang/
あるいは、「苦しんで覚えるC言語」ですね。
http://9cguide.appspot.com/

C++と並行で勉強される事をおすすめします。

あとC++ですと「ロベールのC++教室」でしょうか。
http://www7b.biglobe.ne.jp/~robe/cpphtml/
ただ、サイトは内容が一部古い部分があり問題です(直されている所もあります)。あとで出た本は修正されているんですけどね。
「マイナビ ブックス - ロベールのC++入門講座」
http://book.mycom.co.jp/book/978-4-8399 ... 05-2.shtml
ほんの分厚さは暴力的ですが、これでもC++では物足らないですよね。

言語を覚えることが目的ではなくゲームを作ることが目的なら言語の勉強を程々にしておいてゲームを作ったほうが良いと思います。特にC++に関しては。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

プータカ

Re: コンソールアプリケーションが直ぐに終了してしまう。

#21

投稿記事 by プータカ » 13年前

softya(ソフト屋) さんが書きました:猫でもわかるのサイトではどうでしょう?

「猫でもわかるプログラミング」 C言語編なら構造体も詳しく書いてあると思います。
http://www.kumei.ne.jp/c_lang/
あるいは、「苦しんで覚えるC言語」ですね。
http://9cguide.appspot.com/

C++と並行で勉強される事をおすすめします。

あとC++ですと「ロベールのC++教室」でしょうか。
http://www7b.biglobe.ne.jp/~robe/cpphtml/
ただ、サイトは内容が一部古い部分があり問題です(直されている所もあります)。あとで出た本は修正されているんですけどね。
「マイナビ ブックス - ロベールのC++入門講座」
http://book.mycom.co.jp/book/978-4-8399 ... 05-2.shtml
ほんの分厚さは暴力的ですが、これでもC++では物足らないですよね。

言語を覚えることが目的ではなくゲームを作ることが目的なら言語の勉強を程々にしておいてゲームを作ったほうが良いと思います。特にC++に関しては。
マイナビ ブックス - ロベールのC++入門講座は、よく、書店で見かけるので、
分厚い分少々お値段も張りますが、買ってみようかと思います。
語源というよりも、このサイトのコードをみて真似しながらやった方が良いというこでしょうか(ゲームを作る目的なら)基本がわかっていない方は、とりあえず基本を学んでからと言うようなことがこのサイトに書いてあったのでとりあえず本などかってみたのですが。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#22

投稿記事 by softya(ソフト屋) » 13年前

このサイト(ゲームプログラミングの館や龍神録)を理解する最低条件はC言語を理解している事です。C++の理解を求めている訳ではありません。
C++はC言語を大きく拡張したものですから理解しようとすればC言語よりも沢山の時間が必要ですって事ですね。
ヤりたい事を止める気はありませんので、大変な方を選んでいる事を分かっていて学んでいるのなら問題ありません。
勘違いしているのならC言語のほうが楽ですよ。とお知らせしたいだけです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#23

投稿記事 by beatle » 13年前

語源ってなんでしょう。プログラミング言語のことでしょうか。
ほとんど同じゲームを作るならともかくとして、真似する(コピペする)だけではやりたい事ができないと思います。

softyaさんも言ってますが「言語の勉強を程々にしておいて」からゲームを作ったほうがいいです。
「程々」という表現は確かに曖昧で難しいですが
  • if文、for文、switch文など、C言語の文法を習得し
  • strcpy、malloc、freadなどの標準関数もリファレンスを見つつ使いこなせる
程度を想定すれば良いと思います。

C++は段々学ぶに連れて
「難しいな」「段々わかってきた」「分かった!」「やっぱり分からん・・・」
という変化をたどると僕は思っています。特にテンプレートメタプログラミングの世界に入り込むと「やっぱり分からん」になります。
softyaさんがいうように、C++を極めたいのではなくてゲームを作りたいなら、「分かった」レベルで程々にやめておいたほうがいいよ、ということですね。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: コンソールアプリケーションが直ぐに終了してしまう。

#24

投稿記事 by softya(ソフト屋) » 13年前

ちなみに私の感想はC++は使えば使うほど分からんことが増えていきます。
※ とりあえずC++を使ってはいますが完璧に使いこなしている自信はありません。

なので、他人の書いたテンプレートメタプログラミングのコードは出来るなら読みたくありません。

【補足】
C++だけ勉強した場合の問題点も書いておきますね。

C言語の標準ライブラリはC++の本には書かれていないものが多いです。
「ゲームプログラミングの館」や「龍神録」にはC言語の標準ライブラリがたくさん登場するのでC++の本だけで仕入れた知識だとC言語的な書き方で理解できない部分も沢山あります。

ここの回答者の一人であるたかぎさんのサイトのコンテンツですが、こう言うものがあります。
「C++プログラマのためのC言語入門 | 株式会社きじねこ」
http://www.kijineko.co.jp/tech/cpp2c
つまり、C++だけ勉強しているとC言語のプログラミングは読めないし書けないよということです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

プータカ

Re: コンソールアプリケーションが直ぐに終了してしまう。

#25

投稿記事 by プータカ » 13年前

とりあえず「マイナビ ブックス - ロベールのC++入門講座」という本を購入して勉強したいとおもいます。調べたところ、最初の300ページは、Cのことについて詳しくかかれているみたいで、一つのプログラム言語だけでなく、様々な言語を知っておいた方かあとあと役に立つということも、分かりました。
最後になりましたが、様々なアドバイスありがとうございます!

閉鎖

“C言語何でも質問掲示板” へ戻る