我可以使以下工作正常:
fp = popen("curl http://192.168.0.144:8000/adder?wsdl", "r");
但是当我这样尝试时:
char* cmd;
strcpy(cmd, "curl http://");
strcat(cmd, qrdata->ip_addr);
strcat(cmd, ":8000/adder?wsdl");
fp = popen(cmd, "r");
发生分段错误。
您缺少将内存分配给的信息char * cmd
。
如果使用gcc,则可以根据asprintf()
需要分配尽可能多的缓冲区,以将格式化的字符串打印到:
#define _GNU_SOURCE
#include <stdio.h>
...
char * cmd = NULL;
asprintf(&cmd, "curl http://%s:8000/adder?wsdl", qrdata->ip_addr);
/* Use cmd. */
free(cmd);
注意:上面的示例假定qrdata->ip_addr
是-0
终止的字符数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句