自己用栈写的一个括号检测,但是入栈时候,这句调试*s.top=x,老有错,那位大侠帮帮忙吖,该如何处理

自己用栈写的一个括号检测,但是入栈时候,这句调试*s.top=x,老有错,那位大侠帮帮忙吖
#include "stdio.h"
#include "stdlib.h"
#define STACK_SIZE 10;
#define SIZE_INCREAMENT 5;
#define OK 1;
#define ERROR 0;
struct stack{
char *top;
char *base;
int size;
};
/*******初始化栈*********/
int InitStack(stack &s)
{
s.base=(char *)calloc(10,sizeof(char));
if(!s.base)
return ERROR;
s.base=s.top;
s.size=10;
return OK;
}
/**********出栈**********/
int Pop(stack &s)
{
if(s.base=s.top)
return ERROR;
return *--s.top;
}
/******入栈********/
int Push(stack &s,char x)
{
if(s.top-s.base>=s.size)
{
s.base=(char *)realloc(s.base,(s.size+5)*sizeof(char));
if(!s.base)
return ERROR;
s.size=s.size+5;
s.top=s.base+s.size;
}
*s.top=x;
s.top++;
return OK;
}
void main()
{
stack s;
char x=NULL;
InitStack(s);
printf("请输入括号\n");
while(x!='@')
{
scanf("%c",&x);
/*****条件判断*********/
switch(x)
{
case '[':
case '(':
case '{':
Push(s,x);
break;
case ']':
if(']'==*(--s.top))
;
else
printf("格式错误,重新输入\n");
break;
case '}':
if('}'==*(--s.top))
;
else
printf("格式错误,重新输入\n");
break;
case ')':
if(')'==*(--s.top))
;
else
printf("格式错误,重新输入\n");
break;
default:
break;
}
}

}




------解决方案--------------------
s->top=x不就得了,也有可能是你的s是个非法地址,没细看程序,太长了
------解决方案--------------------
C/C++ code
int InitStack(stack &s)

------解决方案--------------------
C/C++ code

/*******初始化栈*********/
int InitStack(stack &s)
{
    s.base=(char *)calloc(10,sizeof(char));
    if(!s.base)
        return ERROR;
    s.base=s.top;//改为s.top = s.base;
    s.size=10;
    return OK;
}

------解决方案--------------------
探讨

这个是引用,C语言里面有的,之前我写程序已经成功的用过了

------解决方案--------------------
把*s.top=x;换成s.top = &x;
*s.top不是变量,不能对它赋值。

------解决方案--------------------
探讨
这个是引用,C语言里面有的,之前我写程序已经成功的用过了