0

do while関数内でいくつかのコードを実行しようとしています:

do {
    printf("\nThis game has two different modes: I Guess, You Guess\n");
    Sleep(2000);
    printf("Which mode do you want to play?\n");
    cin >> mStr;
    cout << "Are you sure you want to play " << mStr << " mode?";
    cin >> choice;
} while (choice != "No");

ただし、mStr(char配列)に入るたびに、再起動するだけです。それはcoutさえ実行しません。

呼び出されるchar配列は次のとおりです。

char mStr[10];
char choice[4];

ちなみに、coutの代わりにprintf()を使用するにはどうすればよいですか?私はなしで練習しようとしています。

編集:

新しいコードは次のとおりです。

do {
    printf("\nThis game has two different modes: I Guess, You Guess\n");
    Sleep(2000);
    printf("Which mode do you want to play?\n");
    cin >> mStr;
    printf("Are you sure you want to play %s mode?", mStr); //Cuts off here and doesnt display the 'Guess' part of I Guess
    cin >> choice;
} while (strcmp(cKey, choice) != 1);
4

2 に答える 2

5

を使用してchar配列を比較することはできません。サンプルには、!=を使用する必要があります。strcmp

while (strcmp(choice, "No")!=0)

または単に変更します:

std::string mStr;
std::string choice;

その後、あなたは呼び出すことができます

while (choice != "No")

編集

Jarrydが私のコメントで述べたように、mStrの長さを超える文字を入力する場合は、未定義の動作を選択してください。

于 2012-12-12T00:52:49.213 に答える
2

==文字列を単純な等式および不等式演算子およびと比較しないでください!=。代わりに、のような適切な関数を使用する必要がありますstrcmp

于 2012-12-12T00:52:40.837 に答える