萌新,学了以C++为基础的数据结构,用C++没问题,类似的代码修改C出错了,不知错在哪,求大佬帮忙

萌新,学了以C++为基础的数据结构,用C++没问题,类似的代码修改C出错了,不知错在哪,求大佬帮忙
```c
//用栈将十进制转换为八进制
//C
#include<stdio.h>
#define MAXSIZE 99
typedef int Status;
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;

SqStack S;//全局变量

Status InitStack()//初始化栈
{
int num[MAXSIZE];
S.top = S.base = num;
S.stacksize = MAXSIZE;
return 1;
}

Status Push(int e)//入栈
{
if (S.top - S.base == S.stacksize) return 0;
*(S.top) = e;
S.top++;
return 1;
}

Status Pop()//出栈
{
int num;
if (S.top == S.base) return 0;
num = *--(S.top);
return num;
}

Status conversion(int N)
{
InitStack();
while (N)
{
Push(N % 8);
N = N / 8;
}
printf_s("输出八进制的数:");
while (S.top != S.base)
{
printf_s("%d", Pop());
}
}

int main()
{
int D;
printf_s("输入一个十进制的数:");
scanf_s("%d", &D);
if (D > 0)
conversion(D);
else
printf_s("ERROR\n");
system("pause");
}
```
入栈有问题,不知是什么问题

应该把

int num[MAXSIZE];

SqStack S;//全局变量

放到函数外面,作为全局变量,比如放到S的上方来写。

局部变量num在InitStack返回后会失效

温馨提示:答案为网友推荐,仅供参考
相似回答