如何在任何C函数开始之后和函数结束之前插入文本行?

时间:2018-01-17 09:55:08

标签: c regex grep

我有数百个C函数,比如

void test()
{
    <content of function>
}

(函数可能有返回值UBYTEBOOLWORD,...)

现在我想在所有函数中添加一个文本,如下所示:

void test()
{
    LABEEL_BEGIN
    <blank line>
    <content of function>
    <blank line>
    LABEL_END
}

所以我需要在函数的开头插入LABEL_BEGIN和一个空行,并在函数末尾插入一个空行和LABEL_END

我认为这可能是一些俗气的正则表达式!?或者是否有可用的文本编辑器具有这样的功能?目前,我有MS Studio 2013 IDE,Notapad ++,Textpad,PSpad以及GNU grep 2.4.5命令行工具。

2 个答案:

答案 0 :(得分:0)

以下正则表达式将选择每个void,它的名称,任何参数以及它的第一个开口大括号。如果您将此与输入匹配,则可以使用匹配索引和匹配长度来查找void内部内容的起始索引。然后,您可以在索引处添加其他内容。

(void [\w_][\w\d_]*\(.*\)(\r|)(\n|){)

欢迎在这里玩弄它:https://regexr.com/3jarc

要结束此功能,您可以使用上面的正则表达式作为正向后看,然后匹配结束'}'。

答案 1 :(得分:0)

支具柜台怎么样?

您打开源代码文件,然后通过char读取char。 每次你有'{',你增加brace_counter,每次你有'}',你就减少它。

如果你发现'{'并且计数器在递增之前是0,那么你就有了函数的开头。 如果你发现一个'}'并且在减量后对手是0,你的功能就会结束。

这可行吗?或者有一些棘手的C语法会破坏它?