次の式を処理するだけです。中間の2つのオペランドと1つの演算子で単純な数式を解析します。
9-8
12分の5222
* 445 322
7878 + 7
しかし、私はinpurtとして8+9
を入力するとき。 コンソールにのみ表示されます8.000000+
最後のオペランドを処理していないようです。
Iゲスト私は正しくelse if(isOperator(*endTemp))
このブランチ任意のアイデアがありませんでしたか?または方向?私が開始する前に
static double getUserInputValues() {
double values[NUM_OF_USER_INPUT_VALUES];
while (1) {
errno = 0;
char temp[257];
char operator;
fgets(temp, 256, stdin);
char *str = strtok(temp, " ");
int cnt = 0;
while (str != NULL && cnt < NUM_OF_USER_INPUT_VALUES) {
char *endTemp;
double val = strtod(str, &endTemp);
printf("%f", val);
if (*endTemp == 0 || *endTemp == '\n') {
values[cnt] = val;
cnt++;
str = strtok(NULL, " ");
} else if(isOperator(*endTemp)){
operator = *endTemp;
printf("%c", operator);
str = strtok(NULL, " ");
}
else {
errno = 1;
break;
}
}
}
return getReturnValue(values, operator);;
}
static bool isOperator(char ch){
switch(ch){
case '+':
return 1;
case '-':
return 1;
case '*':
return 1;
case '/':
return 1;
default:
return 0;
}
}