在弄进制转换的时候,主函数不加printf就崩溃是怎么回事
#include<stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10 //存储空间分配增量
typedef struct none
{ int *top;
int *base;
int stacksize;
}stack;
void conv(int N,int i);
void CreatStack(stack &s);
void push(stack &s,int e);
void CreatStack(stack &s)//构造一个空栈
{
s.base=(int*)malloc(sizeof(int));
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}
void push(stack &s,int e)//入栈
{
if(s.top-s.base>=s.stacksize)
{
s.base=(int*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(int));
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
}
void pop(stack &s,int &e){
if(s.top==s.base) //判断栈是否为空,用e返回出栈的值
printf("11");
else e = *--s.top;
}
void conv(int N,int i)
{
stack s;
int e;
CreatStack(s);
while(N)
{
push(s,N%i);
N=N/i;
}
while(s.top!=s.base)
{
pop(s,e);
printf("%d",e);
}
}
void main()
{
int N;
scanf("%d",&N);
printf("\n");
conv(N,2); //进制转换
}
就是主函数那里,如果去掉printf就崩溃了,把printf放到其他地方也是崩溃,而在printf里随便打什么都可以,但是不打就不行,这printf有什么关系= =
[解决办法]
调试一下指针和栈。