我编写了一个简单的游戏。我知道如何使用cout / cin但是遇到printf / scanf问题。下面的代码适用于cout / cin。问题是,如何将它们转换为printf / scanf?为什么评论中的代码不起作用?
编辑:我的意思是,如果我删除cout / cin行,当我使用printf / scanf时,它无法正常工作。
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
srand(time(NULL));
int min=0, max=1000, guess, counter=0;
bool winner=false;
char answer;
while(counter<10){
guess = rand()%(max-min)+min;
// printf("Did you pick %d? \t", guess);
// scanf("%c", &answer);
cout << "Did you pick " << guess << "?\t";
cin >> answer;
if(answer=='y'){ // yes
winner=true;
// printf("Computer wins.\n");
// printf("You picked: %d", guess);
cout << "Computer wins." << endl;
cout << "You picked: " << guess;
break;
}
else if(answer=='m'){ // more
min=guess;
counter++;
}
else if(answer=='l'){ // less
max=guess;
counter++;
}
}
if(winner==false){
// printf("User wins.\n");
cout << "User wins." << endl;
}
return 0;
}
答案 0 :(得分:3)
问题是scanf()不会从stdin中删除换行符'\ n',所以在下一次迭代中,下一个scanf()会读取它并尝试处理它,似乎忽略了输入。 /> 试试这个:
scanf("\n%c", &answer);
这样,您希望换行符和scanf()使用它。