如何修改文件夹中所有文件的代码

时间:2012-03-28 19:19:27

标签: c++ file-io

我需要在很多文件(C ++)中进行一些循环修改。我需要用sprintf()替换所有strcpy()和strcat()。我发现转换会像这样:

strcpy(out,in) would be sprintf(out,%d,in)

strcat(out,in) would be sprintf(out,out%d,in) 

我可以用什么工具快速完成所有替换,我不能手动完成这些修改。

感谢您的建议。

我正在使用windows xp / linux Ubuntu

我这样做的原因是我们计划实现一种翻译代码的方法。而且因为我们使用的是strcat,所以我们无法使情境翻译工作得很好。因为所有将被写入的文件赢得了正确顺序的所有东西

3 个答案:

答案 0 :(得分:2)

我会使用编译器 - 或者更确切地说,使用预处理器。

具体来说,我会找到一个项目范围的标题,并在其中添加几行,如:

#define strcpy(out, in) sprintf(out, "%s", in)
#define strcat(out, in) sprintf(out+strlen(out), "%s", in)

...并保留其余的源代码。然后,当你理解时,很容易变回合理并使用strcpy / strcat

答案 1 :(得分:1)

您应该使用任何好的源编辑器(如notepad ++)来根据正则表达式替换字符串。但是,在尝试使用一个表达式更改9k行之前,请不要忘记在单独的位置备份所有文件。

此致

答案 2 :(得分:0)

首先,替换将是:

strcpy(out,in) to sprintf(out, "%s", in)

strcat(out,in) to do{ int temp = strlen(out); sprintf(out+temp, "%s", in); } while(0)

其次,要进行此更改取决于您的操作系统。如果您使用的是Linux或macOS,或者可以访问Linuxy工具的Windows,则可以使用带有正则表达式的sed

在普通的窗户中,我不知道。