質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

321閲覧

C言語 if文 文字で条件分岐する方法について

nananaun

総合スコア1

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2022/07/05 07:38

編集2022/07/05 13:16

学校の課題でTextRPGを作っているのですが、入力した文字で内容が変化する部分を作りたいのですがうまくいきません
作成途中です、一応全部載せました

C言語

1#define _CRT_SECURE_NO_WARNINGS 2#include<stdio.h> 3#include<stdlib.h> 4#include<time.h> 5 6//関数 7const char* aa_title[]; 8void notes_title(void); 9 10//ディスパッチテーブル 11int scene00(void); 12int scene01(void); 13int scene02(void); 14int scene03(void); 15/*int scene04(void); 16int scene05(void); 17int scene06(void); 18int scene07(void); 19int scene08(void); 20int scene09(void);*/ 21 22int (*scene[])(void) = { 23 scene00, //SCN_name 24 scene01, //SCN_introduction 25 scene02, //SCN_explanation 26 scene03, //SCN_day_one 27/* scene04, // 28 scene05, // 29 scene06, // 30 scene07, // 31 scene08, // 32 scene09 // */ 33}; 34 35enum 36{ 37 SCN_name, 38 SCN_introduction, 39 SCN_explanation, 40 SCN_day_one, 41}; 42 43//グローバル変数 44char name[81]; 45char scrounge[81]; 46int days = 0; 47int app = 0; 48int select; 49 50int main(void) 51{ 52 notes_title(); 53 54 rewind(stdin); 55 (void)getchar(); 56 return 0; 57} 58 59 60const char* aa_title[] = 61{ 62 63" ■ ■ ■ ", 64" ■■ ■ ■ ", 65" ■■ ■ ■ ■ ■ ", 66" ■■ ■ ■■■■ ■■■■ ■ ■■■ ■■■■ ■ ■■■ ■ ■■■ ■ ■■ ■■■■ ■■■■ ■■■■ ■ ", 67" ■ ■ ■ ■■ ■ ■■ ■■ ■■ ■ ■■ ■■ ■■ ■■ ■ ■■ ■ ■ ■■ ■ ■ ", 68" ■ ■■ ■ ■ ■ ■ ■ ■■ ■ ■ ■ ■ ■ ■■ ■ ■ ■ ■■ ■ ", 69" ■■■■■■ ■■ ■ ■ ■ ■■■■■■ ■ ■ ■ ■ ■ ■■ ■ ■ ■■■■■■ ■ ", 70" ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■■ ■ ■ ■ ■ ", 71" ■■ ■■ ■ ■ ■■ ■ ■ ■ ■■ ■ ■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■ ", 72" ■ ■ ■■■■ ■■■■ ■ ■ ■■■■ ■ ■ ■■■■■ ■■■■■ ■■ ■■ ■■■■ ■ ", 73" ■ ", 74" ■ ", 75" ■ ", 76 NULL, 77 78}; 79 80const char* item[] = 81{ 82 "ドレス", 83 "ネックレス", 84 "イヤリング", 85 "指輪", 86 "香水", 87 "帽子", 88 "靴", 89 "ブローチ", 90 "ゴルジュラン", 91 "ロザリオ", 92 "ペンダント", 93 "ブレスレット", 94 "帯どめ", 95 "チョーカー", 96 NULL, 97}; 98 99void notes_title(void) 100{ 101 //最初に注意事項の表示 102 printf("表示が止まったらENTER\n"); 103 printf("全画面表示推奨\n"); 104 rewind(stdin); 105 (void)getchar(); 106 printf("\n"); 107 108 system("cls"); 109 110 //タイトル表示 111 for (int i = 0;aa_title[i] != NULL;i++) { 112 printf("%s\n", aa_title[i]); 113 } 114 rewind(stdin); 115 (void)getchar(); 116 printf("\n"); 117 scene[SCN_name](); 118} 119 120int scene00(void) 121{ 122 system("cls"); 123 //名前の決定 124 printf("\nあなたの名前は?\n"); 125 (void)scanf("%s", name); 126 printf("これから%sの物語が始まる\n", name); 127 rewind(stdin); 128 (void)getchar(); 129 printf("\n"); 130 131 return scene[SCN_introduction](); 132} 133int scene01(void) 134{ 135 system("cls"); 136 //物語の導入 137 printf("%sの両親は酷い人達で%sのことを虐待していた\n", name, name); 138 printf("\nある時%sの住む家が放火の被害に遭い離れに隔離されていた%sだけが生き残った\n", name, name); 139 printf("\nそうして天涯孤独となった%sは父の妹に養子として引き取られ義姉と義妹ができた\n", name); 140 printf("\n%sの境遇を知っていた彼女らは%sに優しく接していた\n", name,name); 141 printf("\n%sは人に親切にされることに慣れていなかったが\n段々と彼女らに心を開き本当の家族のように接することができるようになった\n",name); 142 printf("\nそんな時に義母から%sを含めた娘たちはある話しを聞かされた\n", name); 143 srand((unsigned int)time(NULL)); 144 days = rand() % 7 + 7; 145 printf("\n義母曰く「%d日後に王子の婚約者を決めるための舞踏会を開く」とのことだった\n",days); 146 printf("\n義姉や義妹は興味が無いようだったが%sは違った\n", name); 147 printf("\nその姿をみた彼女らは%sを王子の婚約者にするために%sに協力することにした\n",name,name); 148 rewind(stdin); 149 (void)getchar(); 150 return scene[SCN_explanation](); 151} 152int scene02(void) 153{ 154 system("cls"); 155 //ゲームの概要を説明 156 printf("このゲームの目的は%d日後にある王子を魅了するために%d日間家族の協力のもと自分磨きをすることです\n", days, days); 157 printf("\n義姉、義妹、義母の順に自分磨きの手伝いをしてくれます\n"); 158 printf("\n魅力的になれるように頑張りましょう\n"); 159 printf("\n1つだけ忠告をすると、人さらいの集団が%sの住む国に向っているらしいですよ\n", name); 160 printf("\nそれでは「Aschenputtel」を楽しんできてください\n"); 161 return scene[SCN_day_one](); 162} 163int scene03(void) 164{ 165 166 int action = 0; 167 //1日目 168 169 system("cls"); 170 //義姉のターン 171 printf("1日目\n"); 172 printf("\n%sは義姉の所に向った\n", name); 173 printf("\n義姉「%sちゃん、化粧を教えてあげるわ、こっちに来なさい」\n",name); 174 printf("\n%sは義姉に化粧を教えてもらい魅力的になった\n", name); 175 srand((unsigned int)time(NULL)); 176 app += rand() % 3 + 1; 177 178 rewind(stdin); 179 (void)getchar(); 180 system("cls"); 181 182 //義妹のターン 183 printf("%sは義妹の所に向った\n", name); 184 printf("\n義妹「%sお姉ちゃんに今必要なものを教えてあげる」\n", name); 185 srand((unsigned int)time(NULL)); 186 select = rand() % 14; 187 printf("\n義妹「今%sお姉ちゃんに必要なのは%sよ!」\n",name,item[select]); 188 189 rewind(stdin); 190 (void)getchar(); 191 system("cls"); 192 193 //義母のターン 194 printf("%sは義母の所に向った\n", name); 195 printf("\n義母「あら、%sどうしたの?」\n",name); 196 printf("\n義母に義妹から教えてもらったアイテムを買ってもらおう\nアイテムの前の数字を入力してね:"); 197 (void)scanf("%s", scrounge); 198 if (item[select] == scrounge) { 199 printf("\nとっても似合っているよ%s\n",name); 200 printf("\nまた欲しいものがあるなら教えておくれ\n"); 201 srand((unsigned int)time(NULL)); 202 app += rand() % 3 + 1; 203 } 204 else { 205 printf("\n悪いね%s、それを買うことができなかったよ\n",name); 206 } 207 208 rewind(stdin); 209 (void)getchar(); 210 system("cls"); 211 //プレイヤーのターン 212 printf("%sのターンです\n",name); 213 printf("\n1:現在の魅力度を知る\n2:魅力上げをする\n3:魅力下げをする\n4:何もしない\nの内1つを行動出来ます\n"); 214 printf("\n選択肢の数字を入力してください:"); 215 (void)scanf("%d", &action); 216 printf("\n"); 217 if (action == 1) { 218 printf("\n現在の魅力度は%dです\n", app); 219 } 220 else if (action == 2) { 221 srand((unsigned int)time(NULL)); 222 app += rand() % 3 + 1; 223 printf("\n%sの魅力度が上がった\n", name); 224 } 225 else if (action == 3) { 226 srand((unsigned int)time(NULL)); 227 app -= rand() % 3 + 1; 228 printf("\n%sの魅力度が下がった\n", name); 229 } 230 else { 231 printf("\n%sは休憩した\n",name); 232 } 233 printf("\n%sは眠りについた\n", name); 234 235 rewind(stdin); 236 (void)getchar(); 237 system("cls"); 238 printf("残り%d日", days - 1); 239 240 return 0; 241}

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

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

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

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

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

otn

2022/07/05 07:50

質問内容は端的に書きましょう。
Zuishin

2022/07/05 08:12

条件分岐は「じょうけんぶんき」と読みます。
guest

回答1

0

ベストアンサー

上手くいってないのはここかな?

c

1 printf("\n義母に義妹から教えてもらったアイテムを買ってもらおう\nアイテムの前の数字を入力してね:"); 2 (void)scanf("%s", scrounge); 3 if (item[select] == scrounge) {

メッセージでは数字の入力を求めているのに文字列を読み込もうとしていますよ。
まぁscroungeはchar型の長さ81の配列なのでメッセージが間違っているのかな?
だとすれば文字列の一致確認はstrcmp関数使わないといけないのでそれが原因じゃないんですかね。

投稿2022/07/05 07:57

RiaFeed

総合スコア2701

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

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

nananaun

2022/07/05 13:28

数字にしようとしていた時のメッセージのままでした 以前 strcmp関数を使ってみてうまくいかなかったので悩んでたのですが、ただただミスしていただけでした コメントありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問