如何使用sprintf而不是硬编码值

时间:2010-03-20 10:52:15

标签: c printf

我正在为我的项目开发Linux防火墙。我能够捕获数据包并阻止它们。我正在使用IPTABLES。

如何将变量用于sprintf而不是硬编码值?

sprintf(comm, "iptables -A INPUT -s $str -j DROP")
// inplace of:
sprintf(comm, "iptables -A INPUT -s 192.168.0.43 -j DROP")

2 个答案:

答案 0 :(得分:2)

sprintf(comm, "iptables -A INPUT -s %s -j DROP", "192.168.0.43");
// also:
char ipaddress[] = "192.168.0.43";
sprintf(comm, "iptables -A INPUT -s %s -j DROP", ipaddress);

man sprintf中阅读更多内容。

答案 1 :(得分:0)

它就像普通的printf()一样。接受相同的格式字符串。但是,请注意避免溢出字符串缓冲区。从这个意义上说,snprintf()sprintf()更容易被接受。