POpen使用字符串但不是变量

cxz*_*xzp 0 c curl popen segmentation-fault

我可以得到以下工作:

fp = popen("curl http://192.168.0.144:8000/adder?wsdl", "r");
Run Code Online (Sandbox Code Playgroud)

但是,当我这样尝试时:

char* cmd;
strcpy(cmd, "curl http://");
strcat(cmd, qrdata->ip_addr);
strcat(cmd, ":8000/adder?wsdl");

fp = popen(cmd, "r");
Run Code Online (Sandbox Code Playgroud)

发生分段错误.

thu*_*eys 5

你需要为cmd分配内存:

    char cmd [256];
Run Code Online (Sandbox Code Playgroud)

256-1 = 255字符串可以包含的最大字符数

  • 这是一个非常保守的缓冲区.正如"对问题中所示的例子来说太小"一样 - 保守派.:) (2认同)