关于打印2次的问题
代码:
get.h:
typedef char* ns__ParameterName;
typedef char* ns__Test;
struct ParameterNames
{
ns__ParameterName *__ptr ;
int __size ;
};
struct ns__Ret
{
ns__Test *__ptr ;
int __size ;
};
struct ns__GetParameterValuesResponse
{
struct ns__Ret *ns__Ret;
};
int ns__GetParameterValues(
struct ParameterNames* ParameterList,
struct ns__GetParameterValuesResponse *bb///< response parameter
);
a.c
#include <malloc.h>
#include "get.h"
int GetParameterValues(const char* server,struct ParameterNames *ParameterList,struct ns__GetParameterValuesResponse *bb)
{
char *test[2];
test[0] = (char *)malloc(10);
test[1] = (char *)malloc(10);
test[0] = "234456559999";
test[1] = "ert123";
struct ns__Ret *ret;
ret = (struct ns__Ret *)malloc(sizeof(struct ns__Ret));
ret->__ptr = test;
ret->__size = 2;
bb->ns__Ret = ret;
return 0;
}
b.c
#include<iostream.h>
#include <stdio.h>
#include <malloc.h>
#include "get.h"
int GetParameterValues(const char* server, struct ParameterNames *ParameterList,struct ns__GetParameterValuesResponse *bb);
int main(int argc, char **argv)
{
int re = -1;
char *test[2];
char* server="http://172.22.0.141:8888";
test[0] = (char *)malloc(10);
test[1] = (char *)malloc(10);
test[0] = "23445655";
test[1] = "ert123";
struct ParameterNames *Para;
Para =(struct ParameterNames*)malloc(sizeof(struct ParameterNames));
Para->__ptr = test;
Para->__size = 2;
struct ns__GetParameterValuesResponse *bb;
bb =(struct ns__GetParameterValuesResponse*)malloc(sizeof(struct ns__GetParameterValuesResponse));
re= GetParameterValues(server, Para, bb);
if (re != 0)
{
printf("soap err,errcode = %d\n", re);
}
else
{
//bb.ns__Ret = (struct ns__Ret *)malloc(sizeof(struct ns__Ret));
printf("aa=%s\n", bb->ns__Ret->__ptr[0]);//第一次打印正确(test[0]值)
printf("aa=%s\n", bb->ns__Ret->__ptr[0]);//第二次打印错误(乱码)
}
return 0;
}
问题如上
不知道我代码问题在哪里?希望大牛们给个意见或建议