我想处理很多文件,所以我在 xml.l 的末尾添加了这个:
int ParseXml(char *s)
{
int err = 0;
XMLin = fopen(s, "r");
if (!XMLin) {
puts("Error on XML file opening\n");
} else {
XML_switch_to_buffer( XML_create_buffer( XMLin, YY_BUF_SIZE ) );
err = XMLparse();
XML_delete_buffer( YY_CURRENT_BUFFER );
fclose(XMLin);
}
return err;
}
在第一次执行时它工作(它返回 0),但在第二次调用时它失败(它返回 1)。根据flex 手册,它应该可以工作!
我做错了什么?