此代码是堆栈的链接列表实现,解决了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();
}
答案 0 :(得分:0)
您不希望“转换”字节数组,您希望将数字的字符串表示形式解析为正确的数据类型。
首先,您需要知道是否要处理整数或浮点值。然后你将要使用scanf()或atoi()/ atof()将值读入int或double。这些函数都采用char *参数,因此您只需传递a
,而不是a[]
。
答案 1 :(得分:0)
如果您想要从某个偏移量开始,它只是atoi(a)
,或者可能是atoi(a + n)
。虽然strtol()
/ strtod()
可能是更有用的函数,但它们也会告诉您成功解析了多少个字符。并确保数组内某处有一个空终止符。
答案 2 :(得分:0)
使用atof()而不是atoi(),它会将字符串转换为double
答案 3 :(得分:0)
double number = atoi(a[i]);