🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

7805閲覧

エンターキーを押して終了させたい。

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/08/08 13:35

某フリマサイトの売上金計算ツールを作っていたのですが、計算結果がすぐに消えてしまうので最後に「終了するにはエンターキーを押してください」と表示して終了するようにしたいのですが、どのように書き換えればいいのでしょうか?
また、modeの値を1,2以外にしたときにmodeに入力させるようにしたいのですが、ここはどのように書き換えればいいのでしょうか?
回答よろしくお願いします。

C

1int main(void) 2{ 3 int mode = 0; 4 int price = 0; 5 int earn = 0; 6 int send = 0; 7 8 printf("売値から計算するか、売上から計算するかを選択してください。\n"); 9 printf("売値から:1 売上から:2\n"); 10 11 scanf_s("%d",&mode); 12 13 if (mode == 1) { 14 printf("\n売値から計算します。\n"); 15 printf("売値を入力してください\n"); 16 17 scanf_s("%d", &price); 18 19 printf("送料を入力してください。\n"); 20 21 scanf_s("%d", &send); 22 23 int fee = price * 0.1; 24 int earn = price - fee - send; 25 26 printf("売値が%dなので、%dの手数料が発生し、送料が%dなので、売上金は%dです。", price, fee, send, earn); 27 28 getchar(); 29 30 return 0; 31 32 } 33 else if (mode == 2) { 34 printf("\n売上から計算します。\n"); 35 printf("希望する売上額を入力してください\n"); 36 37 scanf_s("%d", &earn); 38 39 printf("送料を入力してください。\n"); 40 41 scanf_s("%d", &send); 42 43 int price = (earn + send) / 0.9; 44 45 printf("送料が%dなので、売上額を%dにするには、売値を%dにしてください。", send, earn, price); 46 47 getchar(); 48 49 return 0; 50 } 51 else { 52 printf("%dは非対応の数字です。", mode); 53 } 54 return 0; 55} 56 57

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

windows用の小ネタですが

c

1system("pause");

投稿2018/08/08 14:19

asm

総合スコア15149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/08/08 14:29

そんなのあるんですね。 調べたら「続行するにはなにかキー押してください」って出るみたいで、便利ですねこれ。
退会済みユーザー

退会済みユーザー

2018/08/08 14:34

modeの入力に戻るにはどうすればいいでしょうか?
asm

2018/08/08 15:03

main関数の名前を適当にcalcとでも変更 新しくmain関数を int main(){ for(;;){calc();} } とでも置く 終了はmode < 0のときにでもexit関数を呼び出して終了させる でいいんじゃないの?
退会済みユーザー

退会済みユーザー

2018/08/08 15:12

なるほど!別の関数にして繰り返すわけですね!
guest

0

「終了するにはエンターキーを押してください」と表示して終了するようにしたいのですが、

C

1printf("\n終了するにはエンターキーを押してください "); 2while(1){ 3 if('\r' == getch()) break; 4}

投稿2018/08/08 13:39

編集2018/08/08 13:46
y_waiwai

総合スコア88030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2018/08/08 13:47

getchar → getch に修正
退会済みユーザー

退会済みユーザー

2018/08/08 13:49

ビルドエラーが起こってしまうのですが、どこに入れればいいのでしょうか?
y_waiwai

2018/08/08 13:50

コンパイラは何を使ってますか?
退会済みユーザー

退会済みユーザー

2018/08/08 13:56

すみません、詳しくはわかりません。 Visual Studio 2017で書いているのですが、それのローカルwindowsデバッガーを押したときに使われるコンパイラです。
退会済みユーザー

退会済みユーザー

2018/08/08 13:59

ちなみに、エラーは「getch 識別子が見つかりませんでした」と出ています。
y_waiwai

2018/08/08 14:00

プロジェクト>プロパティ>C/C++>コード生成>セキュリティチェック>セキュリティチェックを無効にする で、コンパイルし直してください
退会済みユーザー

退会済みユーザー

2018/08/08 14:13

何回か試してみましたができませんでした...エラーメッセージも変わらずです
y_waiwai

2018/08/08 14:22

元コードに組み込んでますか?これだけではダメです
退会済みユーザー

退会済みユーザー

2018/08/08 14:25

printf("売値が%dなので、%dの手数料が発生し、送料が%dなので、売上金は%dです。", price, fee, send, earn); の下にそのまま貼り付けしているのですがそれではだめなのでしょうか?
otn

2018/08/08 14:33

getch() でなく _getch() では?
退会済みユーザー

退会済みユーザー

2018/08/08 14:37

_getch() でも同じでした...
catsforepaw

2018/08/09 02:31

_getch関数は<conio.h>ヘッダーで定義されていますが、インクルードしましたか?
guest

0

ベストアンサー

おそらくですが、エクスプローラーから実行しているのですよね?
提示されているプログラムはCUIのアプリケーションになるので、コマンドプロンプトから実行するのが正しい実行方法になります。
ま、面倒くさい気持ちはわかりますが。

バッチファイルを作るという手もあります。
例えばhoge.batのようなファイルを作成して中身を次のようにする。

BAT

1hoge.exe 2echo 終了するにはエンターキーを押してください 3pause

これをエクスプローラーから実行すればOK。

どうしてもプログラム内で対応したい場合は他の回答を参照してください。

投稿2018/08/09 01:39

ttyp03

総合スコア17000

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問