0

我想处理很多文件,所以我在 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 手册,它应该可以工作!

我做错了什么?

4

1 回答 1

0

我找到了解决方案:

int ParseXml(char *s)
{
    int err = 0;
    XMLin = fopen(s, "r");

    if (!XMLin) {
        puts("Error on XML file opening\n");
    } else {
        err = XMLparse();
        fclose(XMLin);
        XMLlex_destroy();
    }

    return err;
}
于 2013-04-12T16:14:42.987 回答