gpt4 book ai didi

linux - 将 sprintf 替换为带有附加参数的 snprintf

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:43 24 4
gpt4 key购买 nike

我正在编写一个 shell 脚本,用 snprintf 中的一个附加参数替换所有出现的 sprintf 到 snprintf,即单个 .cc 文件中的 sizeof(),

前 -

 sprintf(temp1, "msg%d", hostid); 
sprintf(temp2, "msg%d", hostid);
sprintf(temp3, "msg%d", hostid);

替换为

 snprintf(temp1, sizeof(temp1), "msg%d", hostid);
snprintf(temp2, sizeof(temp2), "msg%d", hostid);
snprintf(temp3, sizeof(temp3), "msg%d", hostid);

注意:本例中 sprintf 的第一个参数,可能随 sprintf 而变化,不是常量。

最佳答案

我认为这个命令会起作用:

sed 's@sprintf(\([^,]*\),\([^,]*\),\([^,]*\));@snprintf(\1, sizeof(\1), \2, \3);@g' theCCfile.cc

也许我错了,但我认为 sizeof 参数必须与第一个 sprintf 参数相同否?如果不是,请将 sizeof(\1) 替换为 sizeof(temp)

在此命令中,每个sprintf 参数将被复制到新的snprintf 行。如果您想替换 sprintf 行的第二个和/或第三个参数,而不是复制,请将 \2 和/或 \3 替换为常量sed 命令中的参数。

关于linux - 将 sprintf 替换为带有附加参数的 snprintf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43368944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com