简单代码.出现了点有关问题.请高手帮帮忙,

简单代码..出现了点问题...请高手帮帮忙,,,
#include   <stdio.h>
#include   <stdlib.h>
#define   stack_init_size   100
typedef   struct  
{
char   *top;
char   *base   ;
        char   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,char   e)
{
*(l-> top++)=e;
return   1   ;

}

void   pop(sqstack   *l)
{
--l-> top;
 


}

char   clearstack(sqstack   *l)       //置空..
{
l-> top=l-> base;
return   1;


}


char   lineedit(sqstack   *l)
{
int   i,j;
char   m;
for(i=0;i <3;i++)
{
scanf( "%c ",&m);
switch(m)
{
case   '# ':pop(l);break   ;
case   '@ ':clearstack(l);break   ;
                default:push(l,m);break   ;



}



}
while(*(--l-> top))
printf( "%c ",*(l-> top));


return   1;

}


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


}

  这是 "行编辑器 "....编译没有错。.但是得不出结构。.这种简单的代码..不需要写注释吧...请高手帮帮忙...

------解决方案--------------------
}
while(*(--l-> top)) <============ while(--l-> top > = l-> base)
printf( "%c ",*(l-> top));


return 1;

}


------解决方案--------------------
我想不通的是,你的主函数的返回类型为何是char?