如何将char数组转换为整数或双精度?
此代码是解决postfix.txt中的postfix问题的堆栈链表实现。如何将char数组转换为整数或双精度?
我盯着我想转换的线。 我只是想让它成为一个双倍,然后我把它放在我的堆栈上,所以我不能在后面进行加法,减法,乘法和除法。我得到的错误是说“预期的表达”。 谢谢!
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();
}
你不想“转换”的字节数组,你想数的字符串表示解析成正确的数据类型。
首先,您需要知道您是否要处理整数或浮点值。然后你会想使用scanf()或atoi()/ atof()将值读入int或double。但是这些函数都需要char *参数,所以你只需通过a
而不是a[]
。
这只是atoi(a)
,或者如果你想从一些偏移量开始,也许atoi(a + n)
。尽管strtol()
/strtod()
可能是更有用的函数,因为它们还会告诉您他们成功解析了多少个字符。并确保数组内有一个空终止符。
你传递给scanf()是什么?我从来没有使用过这样的代码 – Jake 2012-03-26 05:19:14
@Jake:我怎么知道?我从未在我的生活中使用过'scanf'。 – 2012-03-26 05:20:15
使用ATOF()代替的atoi(),这将字符串转换为加倍
杰克,你忘了把一个索引表达式:
double number = atoi(a[i]);
确定'/ N'做你想要的吗? – 2012-03-26 05:18:36