私はObjective-Cを学んでいますが、私の人生では、なぜこれが起こっているのか理解できません。コードが次の場合にユーザーが入力した場合:
scanf("%c %lf", &operator, &number);
何らかの理由で、このコードを台無しにします。
doQuit = 0;
[deskCalc setAccumulator: 0];
while (doQuit == 0) {
NSLog(@"Please input an operation and then a number:");
scanf("%c %lf", &operator, &number);
switch (operator) {
case '+':
[deskCalc add: number];
NSLog (@"%lf", [deskCalc accumulator]);
break;
case '-':
[deskCalc subtract: number];
NSLog (@"%lf", [deskCalc accumulator]);
break;
case '*':
case 'x':
[deskCalc multiply: number];
NSLog (@"%lf", [deskCalc accumulator]);
break;
case '/':
if (number != 0)
[deskCalc divide: number];
NSLog (@"%lf", [deskCalc accumulator]);
else
NSLog(@"You can't divide by zero.");
break;
case 'S':
[deskCalc setAccumulator: number];
NSLog (@"%lf", [deskCalc accumulator]);
break;
case 'E':
doQuit = 1;
break;
default:
NSLog(@"You did not enter a valid operator.");
break;
}
}
ユーザーがたとえば「E10」と入力すると、ループは終了しますが、「有効な演算子を入力していません」と出力されます。コードを次のように変更すると:
scanf(" %c %lf", &operator, &number);
突然、この最後の行が印刷されません。これを修正する%cの前のスペースについてはどうですか?