0

私は以下をうまく動作させることができます:

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");

セグメンテーション違反が発生します。

4

3 に答える 3

1

にメモリを割り当てることができません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-terminated 文字配列であると想定しています。

于 2013-09-16T15:25:37.097 に答える