铭〃 2022-07-07 14:47 采纳率: 40%
浏览 33
已结题

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;
}

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-07-07 14:51
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月15日
  • 已采纳回答 7月7日
  • 创建了问题 7月7日

悬赏问题

  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题