在ansi C中初始化char **字符串,用于soap结构函数参数

时间:2011-03-21 23:55:29

标签: c ansi

此问题适用于具有指针体验的 ANSI C 程序员: (不能使用c ++ new关键字:)

我正在进行soap开发并使用gsoap生成源代码,所以我想使用声明,因为如果可能的话,它们已被提供。

为了在我的应用程序中使用,我获得了以下原型:

soap_call___accounts(struct soap *soap, struct _acnt *acnt, struct _resp *resp);

acnt的以下结构定义为:

struct acnt
{
       int sizeacnt;
       char **acntNum;
};

我的问题是:

在我的调用应用程序中,我需要使用结构成员acntNum作为调用函数中acnt参数的一部分发送一个帐号,例如“00000123”,但在它可用于之前这样做,需要初始化。

char **acntNum如何正确初始化?

2 个答案:

答案 0 :(得分:0)

char *acntNumP = malloc(strlen("00000123")+1);  
strcpy(acntNumP, "00000123");  
char ** acntNum = &acntNumP;

当然,在需要的地方检查NULL

答案 1 :(得分:0)

有关详细信息,另请参阅gSOAP 2.8.1 User Guide

您的soap功能接受一系列帐户。因此,您不仅可以为帐户“00000123”调用soap功能,而且可以在一次通话中调用两个帐户[“00000123”,“00000456”]。

要使其工作,您不仅必须分配内存,还必须将size参数设置为您传递的帐户数。例如,您可以这样做:

struct acnt Accounts;
char *AccountToCheck = "00000123";

Accounts.sizeacnt=1;
Accounts.acntNum = malloc(1 * sizeof(*Accounts.acntNum));
Accounts.acntNum[0] = AccountToCheck;

soap_call___accounts(soap, &Accounts, &Response);