基于与regex,sprintf()和fopen()

时间:2015-06-20 19:49:05

标签: c regex fopen

我有一个大型文本文件,只包含伪编程语言中的函数定义。函数定义看起来像这样(它们可以像他们想要的那样复杂(深度包围等)。):

foo1 = FUNCTION() {

    body
}

我使用C - regex.h程序和分组模式匹配。 fgets()while循环中读取新行,直到文件结尾。每次regexec()匹配foo1 = FUNCTION行中的fgets()时,我会从foo1计算regmatch_t,将其传递给sprintf()并打开新文件与fopen(foo1, "wx")。然后,所有以下行都将写入新打开的文件,直到regexec()与新foon = FUNCTION() {}匹配,并通过sprintf()fopen()打开新文件。这是我想要保留的解决方案的一部分!

但该文件的作者在某些部分是草率的,而不是将函数的名称和它的定义关键字FUNCTION放在同一行,他有时写道:

foo2 = 
FUNCTION() {
    body
}

目前我将此类函数视为未命名,并将其编写的文件分配为m_func形式的名称,其中n是运行索引。现在,m_funcm-1_func)之前的文件也将包含实际名称m_func作为最后一行。鉴于至少m = 50,复制和粘贴似乎是一件麻烦事。所以这里有一个问题:有没有办法实现我在一行上定义的函数所能达到的目标,这样我就可以匹配定义,然后以某种方式获取一行或两行之前的名称并创建一个基于通过fopen()sprintf()

的功能名称

0 个答案:

没有答案