请C语言高手帮忙解决一下

来源:百度知道 编辑:UC知道 时间:2024/05/21 12:43:37
这段程序运行后,就自动弹出去了。请高手解决一下 ,不让自动弹出。

#include<stdio.h>
#include<stdlib.h>
typedef char selemtype;
typedef struct{
selemtype *base;
selemtype *top;
selemtype size;
}sqstack;

void initstack(sqstack &s)
{
s.base=(char*)malloc(100*sizeof(char));
if(!s.base) printf("\nError!\n");
else {s.top=s.base;
s.size=100;
printf("\nOK!\n");}
}//initstack

int sempty(sqstack s)
{if(s.base==s.top) return(1);
else return(0);
}//sempty.如果栈为空则返回1,否则为0。

void push(sqstack &s,char e)
{
if(s.top-s.base>=100)
{
s.base=(char*)realloc(s.base,(s.size+100)*sizeof(char));
if(!s.base)
printf("\nError!\n");
//s.top=s.base+s.size;
s.size+=100;
}
*s.top++=e;
}//push

char pop(sqstack &s,char *e)
{if(s.to

加#include<stdlib.h>

在main函数最后,加上

system("pause"); /*调用dos命令pause使程序暂停*/

薰衣草的旋律一定是没有编译运行过上面的程序吧。
在Windows下这段代码编译运行后会产生错误,阁下那句system("pause");根本得不到运行。另外,楼主已经包含stdlib.h。自动弹出的原因是产生了运行时错误。运行时错误一般是由于指针的使用不当造成的。
解决方法:
将[char *r1;]改为[char *r1=&m;]
解释:
r1未初始化。
当if(pop(r,r1)!=dequeue(s,s1))调用r1时,由于r1没有初始化,
使得pop函数在执行*e的时候发生错误。
本程序中似乎有些没有用到的变量