如何将char数组转换为整数或双精度数组

How do i convert a char array to a integer or double?

本文关键字:数组 整数 双精度 转换 char      更新时间:2023-10-16

此代码是一个堆栈的链表实现,用于解决postfix.txt中的postfix问题。

我凝视着我试图转换的那条线。我只想在把它放在堆栈上之前把它做一个二重,这样我以后就不能用它做加法、减法、乘法和除法了。我得到的错误是说"需要一个表达式"。谢谢

       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()可能是更有用的函数,因为它们还可以告诉您它们成功解析了多少字符。并确保数组中的某个位置有一个null终止符。

使用atof()而不是atoi(),它会将字符串转换为双

Jake,你忘了放一个索引表达式:

double number = atoi(a[i]);