printf("名前を入力してください⇒");
scanf(" %s",name1);
printf("それでいいですか?Yes:1 No:2⇒");
scanf(" %d",&name2);
switch(name2){
case 1:
printf("ではstartします。\n");
break;
case 2:
printf("終了します\n");
break;
default:
printf("はじめからやり直してください\n");
break;
}
↑上記の記述で、case 2の場合は終了。defaultの場合は名前入力に戻るようなプログラムを書きたいのですが、
ネットで探したのですが、見つかりません。
本格的なものではなく、文字だけで進んでいくようなRPGのようなものを作っている途中です。
よろしければ知恵をお貸しくださいm(_ _)m
知恵をお貸しくださいm(_ _)m
Re: 知恵をお貸しくださいm(_ _)m
/*
* 「それでいいですか」でNoを選んだときに「終了します」で
* 本当にいいのかどうかは、やや疑問あり。
* 入力した名前がよくなかったのだから、名前の再入力を求める方が
* 妥当ではないのだろうか。
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char name1[20];
int name2;
do {
printf("名前を入力してください⇒");
scanf(" %s",name1);
printf("それでいいですか?Yes:1 No:2⇒");
scanf(" %d",&name2);
switch (name2) {
case 1:
printf("ではstartします。\n");
break;
case 2:
printf("終了します\n");
exit(0);
default:
printf("はじめからやり直してください\n");
break;
}
} while (name2 != 1 && name2 != 2);
printf("何かの処理\n");
return 0;
}
解答ありがとうございます
解答ありがとうございます。
ご指摘の件確かにその通りでした。
何度も書き直しをしていたのに気づきませんでした…。
ありがとうございましたm(_ _)m
ご指摘の件確かにその通りでした。
何度も書き直しをしていたのに気づきませんでした…。
ありがとうございましたm(_ _)m
Re: 知恵をお貸しくださいm(_ _)m
趣味の問題かもしんないけど、main関数に全部突っ込むと、あとで不具合があったり、改造したいときがきて見直す時に困ったことになりやすいので、細かく関数化しておいたほうが後で楽できるかもしれません・・・
こんな感じにしておけば、名前入力部分に不具合があっても注目すべきはsetName関数の中だろうと容易に推測できますよね。
#include <stdio.h>
#include <stdlib.h>
int setName (char* name)
{
// 名前入力
printf ("名前を入力してください⇒");
scanf (" %s", name);
// コマンド入力
int cmd = 0;
printf ("それでいいですか?Yes:1 No:2⇒");
scanf (" %d", &cmd);
// 入力値による分岐
switch (cmd)
{
case 1:
printf ("ではstartします。\n");
return 1;
case 2:
printf ("終了します\n");
exit (0);
default:
printf ("はじめからやり直してください\n");
return 0;
}
}
int main (void)
{
char name[20];
// 名前入力が完了するまで繰り返す
// ※戻り値が0の場合は再入力指示なので、0以外が返った場合にのみループを抜ける
while (!setName(name));
printf ("何かの処理\n");
return 0;
}
Re: 知恵をお貸しくださいm(_ _)m
バグさん
解答ありがとうございます。
そのような方法があるのですね。
C言語はまだまだ見習いなので、int mainに全て入れるとうまくいくと思ってました。
勉強をもっとしてきます(^^;)
本当にありがとうございますm(_ _)m
解答ありがとうございます。
そのような方法があるのですね。
C言語はまだまだ見習いなので、int mainに全て入れるとうまくいくと思ってました。
勉強をもっとしてきます(^^;)
本当にありがとうございますm(_ _)m