xd们这个错误怎么处理呀,弄一天了一直不行急死了都

这下面是报错的代码跟图片是在push函数那里报错的,这个代码是用栈转换进制,我也不知道有没有实现,然后栈的基本功能这些代码都是从ppt上复制的,反正就是那里一直出bug,刚开始用的malloc,后面换成calloc也不行,xdm到底哪里出错了

img


#include <stdio.h>
#include <stdlib.h>
#define INITSIZE 100
typedef int SElemType;
typedef struct
{
int top;
SElemType *base;
int stacksize;
} sqstack;

int main()
{
int stackempty(sqstack S);
int initstack(sqstack * S);
int gettop(sqstack S, SElemType * e);
int push(sqstack * S, SElemType x);
int pop(sqstack * S, SElemType * e);
sqstack S;
int n, m;
int*e= (int *)calloc(1, sizeof(int));

printf("输出数字:");
scanf("%d", &n);
printf("输出想要转换的进制:");
scanf("%d", &m);
while (n)
{
    push(&S, n % m);
    printf("%d ", n % m);
    n /= m;
}
while (!stackempty(S))
{
    pop(&S, e);
    printf("%d ", *e);
    if (*e >= 10)
        switch (*e)
        {
        case 10:
            printf("A");
            break;
        case 11:
            printf("B");
            break;
        case 12:
            printf("C");
            break;
        case 13:
            printf("D");
            break;
        case 14:
            printf("E");
            break;
        case 15:
            printf("F");
            break;
        }
}
return 0;

}

int initstack(sqstack *S)
{
S->base = (SElemType *)calloc(INITSIZE ,sizeof(SElemType));
if (S->base)
return -1;
S->top = 0;
S->stacksize = INITSIZE;
return 0;
}
int gettop(sqstack S, SElemType *e)
{
if (S.top == 0)
{
printf("Stack is empty!\n");
return -1;
}
*e = S.base[S.top - 1];
return 0;
}
int push(sqstack *S, SElemType x)
{
if (S->top == S->stacksize)
{
S->base = (SElemType *)realloc(S->base, (S->stacksize + 1) * sizeof(SElemType));
if (!S->base)
return -1;
S->stacksize++;
}
S->base[S->top] = x;
return 0;
}
int pop(sqstack *S, SElemType *e)
{
if (S->top == 0)
{
printf("Stack is empty");
return -1;
}
*e = S->base[--S->top];
return 0;
}
int stackempty(sqstack S)
{
if (S.top == 0)
return 1;
else
return 0;
}

肯定是指针异常了
main函数开始时你都没有initstack()啊,当然错误了
sqstack S;
initstack(&S);

内存耗尽,分配不了内存了