我正在为我的项目开发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")
答案 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()
更容易被接受。