ObjC:在do / while循环中跳过scanf

时间:2011-02-23 18:56:44

标签: objective-c scanf do-while

我刚刚开始自学Objective C并且一直在使用简单的基于控制台的计算器。首先,我要问用户他们想要执行哪个操作,执行该操作的两个数字,然后在计算完之后打印答案。

这一部分似乎都运行正常 - 我试图实现的下一篇文章是允许用户继续进行计算,直到他们决定不再需要为止。我想解决这个问题的方法是在检查结束时将计算器的运行放在do / while循环中以查看用户是否想通过scanf();通过'y'或'no'继续,然后检查到看看用户选择回应哪个。我遇到的是在第一遍结束时,通过scanf()输入的请求;只是被忽略,程序终止。

我希望得到一些帮助:)我已尽最大努力通过故障排除,在线研究(在scanf()的白色空间问题上找到了一些东西;但是这没有帮助),然而有些猜测到目前为止我没有成功。以下是我的代码的主要部分:

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];


    float answer;
    char op,repeat;
    NSLog(@"Welcome to my sexy calculater, (_(_)!!"); //don't mind me being weird

    Calculater *deskCalc;   
    deskCalc=[[Calculater alloc] init];

    do
    {

        [deskCalc clear];//clear calc

        op =[deskCalc getOperator]; //get +,-,*,or/
        [deskCalc getNumbers]; //get two numbers

        [deskCalc calculate: op];
        answer=[deskCalc accumulater];

        NSLog(@"Your answer is %f!", answer);


        NSLog(@"Would you like to calculate something again(y/n)?");
        scanf("%c",&repeat);
        //NSLog(@"You typed: %c", repeat);

    } while (repeat=='y');

    [deskCalc release];

    [pool drain];
    return 0;
}

提前感谢您的帮助。如果我没有提供足够的信息,我道歉!请让我知道,我将非常愿意提供更多。再次感谢所有人!

1 个答案:

答案 0 :(得分:0)

您可能想查看Scanf skips every other while loop in C

你需要做一些额外的工作来确保scanf()在用户输入'y','n'或者在按下enter之前输入的任何其他键流时读取stdin上的换行符。

此其他帖子似乎也相关:Why is scanf() causing infinite loop in this code?