c语言实现逆波兰表达式编译无错误,但是跑不出来结果

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10
#define MAXBUFFER 10

typedef double ElemType;
typedef struct
{
ElemType* base;
ElemType* top;
int stackSize;
}sqStack;

void InitStack(sqStack* s)
{
s->base = (ElemType*)malloc(STACK_INIT_SIZE * sizeof(ElemType));
if (!s->base)
exit(0);
s->top = s->base;
s->stackSize = STACK_INIT_SIZE;
}

void Push(sqStack* s, ElemType e)
{
//栈满,追加空间
if (s->top - s->base >= s->stackSize)
{
s->base = (ElemType*)realloc(s->base, (s->stackSize + STACKINCREMENT) * sizeof(ElemType));
if (!s->base)
exit(0);
s->top = s->base + s->stackSize;
s->stackSize += STACKINCREMENT;
}
*(s->top) = e;
s->top++;
}

void Pop(sqStack* s, ElemType* e)
{
if (s->top = s->base)
return;

*e = *--(s->top);

}

int StackLen(sqStack s)
{
return (s.top - s.base);
}

int main(void)
{
sqStack s;
InitStack(&s);
char c;
char str[MAXBUFFER];
double d, e;
int i = 0;

printf("请按逆波兰表达式输入待计算数据,数据与运算符之间用空格隔开,以#为结束标志!\n");
scanf("%c", &c);

while (c != '#')
{
    while (isdigit(c) || c == '.')
    {
        str[i++] = c;
        str[i] = '\0';
        if (i >= 10)
        {
            printf("\n输入数据过大!!!\n");
            return -1;
        }
        scanf("%c", &c);
        if (c == ' ')
        {
            d = atof(str);
            Push(&s, d);
            i = 0;
            break;
        }
    }
    switch (c)
    {
    case '+' :
        Pop(&s, &e);
        Pop(&s, &d);
        Push(&s, d + e);
        break;
    case '-' :
        Pop(&s, &e);
        Pop(&s, &d);
        Push(&s, d - e);
        break;
    case '*' :
        Pop(&s, &e);
        Pop(&s, &d);
        Push(&s, d * e);
        break;
    case '/' :
        Pop(&s, &e);
        Pop(&s, &d);
        if (e != 0)
        {
            Push(&s, d / e);
        }
        else
        {
            printf("\n输入数据有误!!!\n");
            return -1;
        }
            
        break;
    }
    scanf("&c", &c);
}

double f;
Pop(&s, &f);
printf("\n最终结果为 :%f!!!\n", f);

return 0;

}