Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带do while函数的无限循环_C++_Loops_Do While - Fatal编程技术网

C++ 带do while函数的无限循环

C++ 带do while函数的无限循环,c++,loops,do-while,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 " <<

我正在尝试在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");
顺便说一句,我怎么能用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);

永远不要将字符串与普通的相等和不相等运算符==和!=进行比较。相反,您应该使用适当的函数,如。

您不能使用!=,来比较字符数组,对于示例,您需要使用:

while (strcmp(choice, "No")!=0)
或者干脆改变:

std::string mStr;
std::string choice;
然后你可以打电话

while (choice != "No")
编辑:


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

您能提供更多信息吗?什么是选择?什么是mStr?您应该坚持一种类型的输入/输出。使用printf和scanf,或者使用std::cin和std::cout。您如何声明选择?您如何声明mStr?您确定它没有执行cout吗?不过,这似乎并不能解决问题,对吗?由于这是一个do-while循环,cout应该执行。同时,cout正在读取一个有界缓冲区中的一个无界读取。这不好。接球不错,更新了我的答案。谢谢你的提示。对不起,我是新的编码员。现在它说你确定要玩I模式吗?然后退出。@billz,实际上,任何超过3个字符的都是UB。如果输入abc,则它包含abc\0.thx chris@Pon-3,你的代码更新到什么?
while (choice != "No")