如何将COUT/CINS转换为printf/scanfs

How to translate cout/cins to printf/scanfs?

本文关键字:printf scanfs 转换 CINS COUT      更新时间:2023-10-16

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

问题是scanf()不会从stdin中删除newline' n'字符,因此在下一个迭代中,下一个scanf()读取它并尝试处理它,似乎忽略了输入。
改用此方法:

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

这样,您期望newline和scanf()消耗它。