这段代码是一个堆栈的链表实现,用于解决postfix.txt中的后缀问题。
我盯着我想要转换的那条线。我只是想在我把它放到堆栈上之前把它变成一个双精度的,这样我以后就不能用它做加、减、乘和除了。我得到的错误是说“期望的表达式”。谢谢!
void main()
{
ifstream postin("postfix.txt");
char oper;
char a[100];
int i=0;
while(oper != '$')
{
stack operands;
while(oper != '/n'&& oper != '$')
{
while(oper != ' '&&oper != '/n'&& oper != '$')
{
oper = postin.get();
if(oper != '+' || oper != '*' || oper != '-' || oper != '/')
{
do
{
a[i]= oper;
i++;
}while(oper != ' ');
************************************************double number = atoi(a[]);
operands.Push(number)
}
else
{
double b = operands.Pop();
double a = operands.Pop();
if(oper == '+')
{
operands.Push(a+b);
}
else if(oper == '-')
{
operands.Push(a-b);
}
else if(oper == '/')
{
operands.Push(a/b);
}
else
{
operands.Push(a*b);
}
}
}
}
}
postin.close();
}发布于 2012-03-26 13:14:04
您不希望“转换”字节数组,而是希望将数字的字符串表示形式解析为正确的数据类型。
首先,你需要知道你要处理的是整数还是浮点值。然后,您需要使用scanf()或atoi()/atof()将值读入整型或双精度型。不过,这些函数都有一个char*参数,所以您只需传递a,而不是a[]。
发布于 2012-03-26 13:15:41
它就是atoi(a),或者如果你想从某个偏移量开始,也可以是atoi(a + n)。尽管strtol()/strtod()可能是更有用的函数,因为它们还会告诉您它们成功解析了多少个字符。并确保在数组中的某处有一个空的结束符。
发布于 2012-03-26 13:15:54
使用atof()而不是atoi(),它会将字符串转换为双精度
https://stackoverflow.com/questions/9866889
复制相似问题