中缀表达式pta上报段错误,Devc++可以运行,如何解决?

问题遇到的现象和发生背景

在pta中缀表达式转后缀表达式题,运行代码报错段错误,但在DeVC++上就能运行

用代码块功能插入代码,请勿粘贴截图

#include <stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#define Maxsize 20
char str[Maxsize];
char suffix_str[Maxsize];

typedef struct SNode *Stack;
struct SNode
{
int top;
char data[Maxsize];
};
Stack S_create()
{
Stack S;
S=(Stack)malloc(sizeof(struct SNode));
S->top=-1;
return S;
}

void push(Stack S,char p)
{
S->top++;
S->data[S->top]=p;
}
char pop(Stack S)
{
char ch;
ch=S->data[S->top];
S->top--;
return ch;
}
int order(char ch)
{
if(ch=='-'||ch=='+')
return 1;
if(ch==''||ch=='/')
return 2;
if(ch=='(')
return 0;
}
void pri_str(char str1[])
{
int i=0;
for(i=0;str1[i+1]!='\0';i++)
{
printf("%c ",str1[i]);
}
printf("%c",str1[i]);
return ;
}
int main()
{
Stack s;
s=S_create();
int i=0,j=0;
scanf("%s",str);
for(i=0;str[i]!='\0';i++)
{
if(isdigit(str[i]))
{
suffix_str[j]=str[i];
j++;
}
else if(str[i]=='-'||str[i]=='+')
{
while(order(str[i])<=order(s->data[s->top]))
{
suffix_str[j]=pop(s);
j++;
}
push(s,str[i]);
}
else if(str[i]=='
'||str[i]=='/')
{
push(s,str[i]);
}
else if(str[i]=='(')
push(s,str[i]);
else if(str[i]==')')
{
while(s->data[s->top]!='(')
{
suffix_str[j]=pop(s);
j++;
}
s->top--;
}
}
while(s->top!=-1)
{
suffix_str[j]=pop(s);
j++;
}
pri_str(suffix_str);
return 0;
}

运行结果及报错内容

img

img

我的解答思路和尝试过的方法

发现在PTA测试用例上较短表达式可以转换成功,如2+8/4,但表达式较长就无法转换