这一定很简单,但由于来自 Java 世界,在这种情况下我感觉有点不知所措。
while (operator != 'E') {
NSLog(@"Enter:");
scanf("%lf %c", &value2, &operator);
switch (operator) {
case 'S':
[deskCalc setAccumulator:value2];
break;
case 'E':
break;
case '+':
[deskCalc add:value2];
break;
case '-':
[deskCalc subtract:value2];
break;
case '/':
[deskCalc divide:value2];
break;
case '*':
[deskCalc multiply:value2];
break;
default:
NSLog(@"Unknown command");
break;
}
NSLog(@"=%g", [deskCalc accumulator]);
}
现在,如果我只输入 'e' 或其他一些字符而没有先输入数字,程序就会像这样进入循环:
2010-02-08 13:44:38.690 Calculator[89939:a0f] Enter:
2010-02-08 13:44:38.691 Calculator[89939:a0f] Unknown command
2010-02-08 13:44:38.691 Calculator[89939:a0f] =10
2010-02-08 13:44:38.692 Calculator[89939:a0f] Enter:
2010-02-08 13:44:38.692 Calculator[89939:a0f] Unknown command
2010-02-08 13:44:38.693 Calculator[89939:a0f] =10
为什么 scanf 不阻塞线程并再次要求正确输入?
谢谢诺伊