一个简单的文件读取入栈的问题
#include"stdio.h"#include"stdlib.h"
#define MAXSIZE 30
//就是读入一个文档中的符号 判断有没有不是成对出现的。如{} 这样的就是正确地
//如果不是则报错。
typedef char element;
typedef struct
{
element date[MAXSIZE];
int top;
}SeqStack;
SeqStack *InitStack(SeqStack *S)//初始化栈
{
S=(SeqStack *)malloc(sizeof(SeqStack));
S->top=-1;
return S;
}
SeqStack *input_stack(SeqStack *S,char cp)//从文档中读取的字符输入栈中
{
S->top++;
S->date[S->top]=cp;
}
SeqStack *output_stack(SeqStack *S)//出栈
{
S->top--;
}
int judge_symble(SeqStack *S,char cp)//判断传递过来的是什么
//如果是符号的话就入栈 对应的话就出栈
{
switch (cp){
case '{' :
input_stack(S,cp);
break;
case '}' :
output_stack(S);
break;
}
}
int file_read(SeqStack *S)//文件读取
{
char cp;
int i=0;
FILE *fp;
S=InitStack(S);
if((fp=fopen("test.txt","r"))==NULL)
{
printf("文件打开失败!");
}
else
{
while((cp=fgetc(fp))!=EOF)//每读入一个字符都入栈
{
judge_symble(S,cp);
}
}
fclose(fp);
}
int main(void)
{
SeqStack *S;
file_read(S);
if((S->top)%2==0)//成对出现就是对的
{
printf("没有错误");
}
else
{
printf("有误");
}
}
就是一步步调试入栈出栈都能进行,但是就是不运行到最后直接停止了,找不出是哪里错误啊,希望大神帮下忙看看,谢了