我正在尝试使用c中的堆栈检查HTML标记余额。这是我的代码的样子:
void tagcheck()
{
FILE *fp;
fp=fopen("html.txt","r");
char ch;
while(ch=getc(fp)!=EOF)
{
if(ch =='<')
{
push(ch);
while(ch=getc(fp)!='>')
{
if(ch=='/')
{
pop();
while(ch!='<')
{
ch=getc(fp);
pop();
}
pop();
continue;
}
else if(ch=='!')
{
pop();
continue;
}
push(ch);
}
}
}
if(s->top=-1)
{
printf("No Tag Error\n");
}
else
printf("Tag error\n");
fclose(fp);
}
当我尝试运行它时,由于某种原因,ch=='<'
条件为false并且循环有点浪费。这有什么问题?
我检查了没有问题的文件名和路径。