无限循环与do功能

Pon*_*n-3 0 c++ loops do-while

我试图在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");
Run Code Online (Sandbox Code Playgroud)

但是,每次我输入mStr(一个char数组)时,它都会重新启动.它甚至没有执行cout.

以下是名为char的数组:

char mStr[10];
char choice[4];
Run Code Online (Sandbox Code Playgroud)

另外,我怎么能用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);
Run Code Online (Sandbox Code Playgroud)

bil*_*llz 5

你不能通过使用!=,你需要使用strcmp,来比较char数组:

while (strcmp(choice, "No")!=0)
Run Code Online (Sandbox Code Playgroud)

或者只是改变:

std::string mStr;
std::string choice;
Run Code Online (Sandbox Code Playgroud)

然后你可以打电话

while (choice != "No")
Run Code Online (Sandbox Code Playgroud)

编辑:

正如Jarryd在我的评论中提到的,如果你输入超过mStr长度的字符,选择它是未定义的行为.

  • 此外,他正在阅读一个带有无限读数的有界缓冲区.这是不好的. (3认同)