如何将cout / cins转换为printf / scanfs?

时间:2012-11-03 00:07:20

标签: c++ io

我编写了一个简单的游戏。我知道如何使用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;
}

1 个答案:

答案 0 :(得分:3)

问题是scanf()不会从stdin中删除换行符'\ n',所以在下一次迭代中,下一个scanf()会读取它并尝试处理它,似乎忽略了输入。 /> 试试这个:

scanf("\n%c", &answer);

这样,您希望换行符和scanf()使用它。