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 (一个字符数组)时,它都会重新启动。它甚至不执行 cout。

以下是调用的 char 数组:

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

在旁注中,我怎么能使用 printf() 而不是 cout 呢?我正在努力练习。

编辑:

这是新代码:

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 回答