此问题适用于具有指针体验的 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
如何正确初始化?
答案 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);