C 是否有任何方法可以使用strof()来转换";负数;
我正在尝试编写一个函数,将字符串转换为数学运算C 是否有任何方法可以使用strof()来转换";负数;,c,string,C,String,我正在尝试编写一个函数,将字符串转换为数学运算 int RPN_Evaluate(char * rpn_string, double * result) { struct Stack calculate = {}; char *token; char *endptr; double x,y; token = strtok(rpn_string, " "); while (token != NULL) { *number = strtof(
int RPN_Evaluate(char * rpn_string, double * result)
{
struct Stack calculate = {};
char *token;
char *endptr;
double x,y;
token = strtok(rpn_string, " ");
while (token != NULL) {
*number = strtof(token, &endptr);
if (*token == '+') {
StackPop(&calculate, &y);
StackPop(&calculate, &x);
result_operation = x + y;
StackPush(&calculate, result_operation);
} else if (*token == '-') {
StackPop(&calculate, &y);
StackPop(&calculate, &x);
result_operation = x - y;
StackPush(&calculate, result_operation);
}else if (*endptr != NULL) {
return RPN_ERROR_INVALID_TOKEN;
} else if (*endptr == NULL) {
StackPush(&calculate, *number);
}
token = strtok(NULL, " ");
}
StackPop(&calculate, result);
return RPN_NO_ERROR;
}
如果我通过“11+”,它就可以正常工作。然而,当我通过“2-1+”时,我遇到了这个问题
是否有任何方法可以使用strof()将“-1”转换为-1?strof()似乎不会自动执行此操作。。我建议您花一些时间使用调试器逐步完成代码。
strof
肯定可以处理负数。看见您的问题是,您正在将-1
的前导-
解析为-
运算符;您的if/else
构造是错误的。您的问题(以及发布的函数原型)表明结果是双精度的,而不是*number=strof(token,&endptr)代码>建议:*number=strtod(令牌和endptr)代码>但是,在哪里声明了number
,在哪里声明了result\u操作
以及在哪里声明了函数:StackPush()
和StackPop()
?