我需要在很多文件(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,所以我们无法使情境翻译工作得很好。因为所有将被写入的文件赢得了正确顺序的所有东西
答案 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
。
在普通的窗户中,我不知道。