江湖救急没分了.谢谢帮忙.菜鸟有关问题.

江湖救急..没分了..多谢帮忙..初学者问题..
#include   <stdio.h>
#include   <stdlib.h>
#define   stack_init_size   100
typedef   struct                                   //定义栈.....
{
char   *top;                               //栈顶指针......
char   *base   ;                             //栈底指针......
int   sizestack   ;                     //初始分配大小....

}sqstack   ;

char   initstack(sqstack   *l)       //新键栈......
{
l-> base=(char   *)malloc(stack_init_size*sizeof(char   ))   ;     //对栈开空间.....
l-> top=l-> base;     //使栈为空....
l-> sizestack=stack_init_size;   //初始分配大小....
return   1;

}

char   push(sqstack   *l,int   e)     //压栈....
{
*(l-> top++)=e;       //把e的值给栈顶......
return   1   ;

}

char   pop(sqstack   *l)     //出栈...
{
--l-> top;             //....
return   1;


}

char   gettop(sqstack   *l)     //用来返回栈顶元素的。...
{
return   *(--l-> top);


}

char   partnership(sqstack   *l)   //进行括号配对....
{
char   a[100],*p;

gets(a);
p=a;
while(*p)     //用指针p扫描给个元素....
{
if(*p== '( '     ||     *p==   '[ ')     //如果扫描的时候有 '( '或 '[ '...就入栈..
push(l,*p);
p++;    

}
 


p=a;
while(*p)     //在一次重开始进行扫描....
{
if(gettop(l)== '( '   &&   *p== ') '   ||     gettop(l)== '[ '     &&     *p== '] ')
pop(l);



}

if(l-> top==l-> base)
printf( "配对 ");
else  
printf( "不配对 ")   ;
return   1;

}


char   main()
{
sqstack   a;
initstack(&a);
partnership(&a);
return   1;

}


    这个一个括号配对的问题。..编译没有错..可能是哪个指针用错了吧..我找不出来错误..请大家帮帮忙啊。.谢谢了....

------解决方案--------------------
#include <stdio.h>
#include <stdlib.h>
#define stack_init_size 100
typedef struct //定义栈.....
{
char *top; //栈顶指针......
char *base ; //栈底指针......
int sizestack ; //初始分配大小....
}sqstack ;

void initstack(sqstack *l) //新键栈......
{
l-> base=(char *)malloc(stack_init_size*sizeof(char)) ; //对栈开空间.....
l-> top=l-> base; //使栈为空....
l-> sizestack=stack_init_size; //初始分配大小....
}

void push(sqstack *l,char e) //压栈....
{
*(l-> top++)=e; //把e的值给栈顶......
}

void pop(sqstack *l) //出栈...
{
--l-> top; //....
}

char gettop(sqstack *l) //你返回栈顶写的不对,你l-> top--栈顶就变了
{
char *p=l-> top-1;
return *p;
}

int partnership(sqstack *l) //进行括号配对....