「33 44 55 + 66 * + =」(つまり逆ポーランド記法、RPN)のような標準入力があり、次のようにコードを解析して解析します。しかし、scanf( "%d")は '+'を読んでそれを破棄し、演算子をungetcしてscanf( "%c")で読み取らせる方法は?問題を解決する最良の方法は何ですか?ありがとう。whileループを使用して数値と演算子のシリーズをスキャンする方法は?
while ((reta = scanf("%d", &operand)) == 1 || (retb = scanf(" %c ", &operator)) == 1) {
if (reta == 1) push(exprStack, operand);
else if (retb == 1) {
operand = pop(exprStack);
/* function pmtd executes some basic calculation, i.e., plus, minus, times and divide */
push(exprStack, pmtd(operator, pop(exprStack), operand));
}
}
あなたは 'strtok(3)'をチェックアウトすることができます。 –
'scanf()'を使用する必要がありますか?通常、対話型入力には適していません。 'fgets()'を使い、入力文字列を自分で解析します。 –
@Carl:strtokは大して問題ありません。デリミタはstrtok(3)によって破棄されます。 –